TYP: tighter typing in _apply_array
And avoid a circular import
```bash
mypy.....................................................................Failed
- hook id: mypy
- duration: 80.43s
- exit code: 1

pandas/core/arrays/datetimes.py:799: error: "_apply_array" of "BaseOffset" does not return a value  [func-returns-value]
pandas/core/arrays/datetimes.py:817: error: "BaseOffset" has no attribute "normalize"  [attr-defined]
Found 2 errors in 1 file (checked 1451 source files)
``` Thanks @jbrockmendel 