BUG: flex op with DataFrame, Series and ea vs ndarray
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

<s>I have a couple ideas in mind that might make the edit in blocks here unnecessary, but want to profile them first, so will do that cleanup in a refactor following the bugfix.</s> Updated with a much cleaner implementation, it also de-special-cases one of our timedelta64 tests.