TYP/CLN: Optional[Hashable] -> pandas._typing.Label
LGTM The only consideration point is that `Label` at least from a reader point of view was supposed to signal something that would actually be used as a Label for a row / column. Some of the uses here blur that distinction and simply leverage it because it can be used as the key for a mapping

Do you see any value in trying to maintain that distinction? can you be specific on the offending changes. where Label is used for an index name, I don't see that as being different from an row/column name. @WillAyd any specific objections?  i dont see any problem here

@simonjayhawkins needs rebase @simonjayhawkins what do you think about reverting the `attrs` annotation and calling this a win? will do. we have flakey ci atm but will give it a go. 

(we have a fix for ci pending in #32449 but if we merge @SaturnFromTitan doesn't get credit (see #32457) or could just revert #32281 for now instead.)