[BUG] Fix interpolation for datetimelike dtypes
- [x] closes #11312, #11701, #19199,
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Two bugs here, one fixed, one avoided.  First is in `Block._interpolate` where datetimelike values were not cast correctly.  Second is that `DataFrame.transpose` will raise in some conditions (see #19198, also motivated #21908).

This adds dtype-handling code in `Block._interpolate`.  An alternative would be to override `_interpolate` in subclasses.  Either way works for me.

NB: This is only implemented for `method='linear'`.  I made that explicit in the tests as a reminder to follow-up with others.

(#19199 is marked as  a duplicate but it includes a bug report for the TZ-aware case that is separate bug.)