[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.)
I'll hold off on pushing this until #21870 (and possibly #21903) go through to avoid rebasing hell Closing temporarily to clear the queue. Looks like this was lost somewhere in the process. Pity, would be great to see this somewhen :)  @nielsuit227 you're welcome to pick this up and run with it