BUG: Fix alignment of list-like objects for operations with DataFrame
- [X] closes #17901
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

Some comments:
- Replaced `pd.DataFrame` with `ABCDataFrame` in `isinstance` checks throughout `ops.py`, as I'm of the impression that this is the best practice.  Can revert these if I'm mistaken.
- I didn't use `deque` in the test I modified (though I did in the one I created).  The reason being that `deque` gets cast to `int32` instead of `int64` on Windows, and the test compares against a `Series` with `int64` dtype.  
    - Could be fixed by mimicking the `is_list_like` check here, and doing something similar to #17840 but probably best to do in a separate PR (would be happy to do such a PR)
    - I could explicitly cast the result series to `int64` if we want to add `deque` now, then remove after implementing a fix
    - I suppose it could be marked as xfailing if without modifications if we want to add `deque` now, but seems kind of pointless to mark one of the tests being modified as xfailing