TYP: to_arrays, BUG: from_records empty dtypes
1) the argument annotation for columns in to_arrays isnt quite right.  this is fixed by adding an ensure_index inside `DataFrame.__init__`
2) call ensure_index in the empty case in to_arrays so we can tighten from `Tuple[Any, Any]` to Tuple[Any, Index]`
3) in the structured array case in to_arrays, return a list of empty ndarrays instead of list of empty lists, so we can further tighten to `Tuple[List[ArrayLike], Index]`
4) This breaks test_from_records_empty_with_nonempty_fields_gh3682, at which point we decide that the new behavior is better, so calling it a bugfix.
+1 on calling this a bug fix, if you can add a whatsnew note and ping on green. whatsnew added + greenish