BUG: fix DataFrame+DataFrame op with timedelta64 dtype
<s>Needs whatsnew note.</s>

This has the benefit of looking a lot like the SparseDataframe._combine_frame implementation.  With luck we can de-duplicate those at some point.

Likely to be a perf hit for non-td64 dtypes.  One option would be to use dispatch_to_series more selectively, but that gets complicated in a hurry.

I think long-term the perf solution is going to be to dispatch to EA ops instead of Series ops, as discussed briefly in #22614, but that is a ways away.

- [x] closes #22537
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry
