BUG: fix length_of_indexer with boolean mask
- [x] closes #25774
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Allows for a nice cleanup in _setitem_with_indexer.  Note this will conflict with #31887; the order doesn't matter.
> is this a bug fix? (the OP was)

Only sorta-kinda.  The current behavior is wrong (assuming im correctly interpreting the desired behavior as "give the expected length of obj[indexer]"), but AFAICT nothing user-facing.
 gentle ping (for this and #31887).  i think ive got a handle on the brokenness of _setitem_with_indexer and would like to get these simplications in before ripping apart whats left