REF/CLN: maybe_downcast_to_dtype
Separate out a numeric-only maybe_downcast_to_dtype_numeric from maybe_downcast_to_dtype.  Avoid a giant try/except by checking the correct things up front.

The non-numeric portion of maybe_downcast_to_dtype casts to datetime64, datetime64tz, or PeriodArray.  Following #27683 the next step in cleaning up internals is going to be getting rid of _try_cast_result, which will involve replacing a usage of maybe_cast_to_dtype with the less-broadly-scoped maybe_cast_to_dtype_numeric.