BUG/REF: ArrowExtensionArray non-nanosecond units
- [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.

Fixes a few bugs related to non-nanosecond units for pyarrow duration and timestamp types.

The underlying issue is upstream (https://github.com/apache/arrow/issues/33321) where pyarrow does not handle pandas `Timedelta` and `Timestamp` non-nano units correctly.

Example (1 seconds -> 0 seconds):

```
In [1]: import pandas as pd

In [2]: import pyarrow as pa

In [3]: td = pd.Timedelta(1, unit="s").as_unit("s")

In [4]: pa.scalar(td, type=pa.duration("s"))
Out[4]: <pyarrow.DurationScalar: datetime.timedelta(0)>

In [5]: pa.array([td], type=pa.duration("s"))
Out[5]: 
<pyarrow.lib.DurationArray object at 0x10751d120>
[
  0
]
```

Is there some amount of this we can hope to rip out once pyarrow is updated? > Is there some amount of this we can hope to rip out once pyarrow is updated?

I think it can all be removed eventually. It may take some time as it needs to be fixed upstream first and then the pyarrow min version needs to catch up. Thanks @lukemanley 