BUG: preserve EA dtype in transpose
does this subsume #28048? > does this subsume #28048?

Ah, yeah forgot about that one. Easy to forget about, i closed it to clear the queue and then only reopened it a couple days ago.  I'm going to re-close it in favor or this one; maybe its worth salvaging some of the tests it implemented Pushed a largeish refactor. We actually don't need NDFrame.transpose anymore. Series gets its from IndexOpsMixin. So I moved the logic to DataFrame.transpose, and was able to remove all the axes handling stuff.

> maybe its worth salvaging some of the tests it implemented

Added.
 I think this is ready. A handful of comments, generally looks good @TomAugspurger merge master when you have a chance (or @jbrockmendel if this is a blocker) rebased.  not a blocker for the blockwise PRs thanks @TomAugspurger 

@jbrockmendel I don't think we had a dedicated issue for this to be closed...... #22120, since its about cyberpandas, i think we should ask tom to double-check that this fixes it.