PERF: Avoid copy in DataFrame._reduce corner cases
This implements BlockManager._get_data_subset (which ArrayManager already has) to avoid making a copy in a `DataFrame.__getitem__` usage inside DataFrame._reduce.

This path is deprecated so this snippet will be removed in 2.0.

