PERF: Dataframe reductions with EA dtypes
Avoids re-checking the `_reduce` method signature on every block which can be slow. No whatsnew as I believe the method signature check was only added in the 2.1 cycle.

```
import pandas as pd
import numpy as np

df_wide = pd.DataFrame(np.random.randn(4, 10_000), dtype="float64[pyarrow]")

%timeit df_wide.sum()

# 3.2 s ± 54.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)   <- main
# 2.02 s ± 89.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)  <- PR    
```

thx @lukemanley  Hello @lukemanley, 

Great work on the performance enhancement! I'm still learning and was curious about how you identified this for improvement. Could you share a bit about your process?

Thank you for your time and contributions!