BUG: process Int64 as ints for preservable ops, not as float64
Calling `.min()` or `.max()` on `pd.Int64` data returns integers, but uses `float64` as an intermediate representation, leading to data corruption.

This PR attempts to whitelist them to be processed entirely as `Int64`s. Also add a test that verifies this behavior, as existing tests failed to detect the bug.

- [x] closes #32651
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
