PERF: DataFrame reductions with axis=None and EA dtypes
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/v2.1.0.rst` file if fixing a bug or adding a new feature.

```
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(1000, 1000), dtype="float64[pyarrow]")

%timeit df.min(axis=None)

316 ms ± 52.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)     <- main
196 ms ± 13.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)     <- this PR
22.9 ms ± 1.32 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)  <- this PR + #54299 (pending PR)
```


Existing ASV:

```
       before           after         ratio
     [aefede93]       [bf708351]
     <main>           <perf-ea-axis-none-reductions>
-      8.83±0.7ms       7.03±0.3ms     0.80  stat_ops.FrameOps.time_op('std', 'Int64', None)
-        99.6±4ms       13.7±0.3ms     0.14  stat_ops.FrameOps.time_op('skew', 'Int64', None)
-        96.7±4ms       13.2±0.3ms     0.14  stat_ops.FrameOps.time_op('kurt', 'Int64', None)
-        107±10ms       12.9±0.3ms     0.12  stat_ops.FrameOps.time_op('median', 'Int64', None)
-        63.9±2ms       6.01±0.8ms     0.09  stat_ops.FrameOps.time_op('mean', 'Int64', None)
```
Thanks @lukemanley 