BUG: Fix bug in loc setitem changing the dtype when condition is False
- [x] closes #37550
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry


This fixes the bug, but I am not sure, if the solution is good enough....
This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. @phofl can you merge master to resolve conflicts @phofl can you rebase and will look again merged master @jbrockmendel ok here? @phofl can you update Looks like the `ser[[]] = [1, 2, 3]` thing hasnt been addressed ok let's move off the milestone for rn, can always do after the rc @phofl status of this (merge master) @phofl worth fixing up? Yeah definitely.

i hope that I can get back to this friday or friday next week  I moved the fix for the all False case. This fixes an inconsistency in _align_series and covers the all False indexer case. 

I could not figure the empty list thing out. The values look exactly the same as in the all False case. We probably will have to fix this someplace else, but not sure right now.

I woild propose open an issue about that and go from there. lgtm @jbrockmendel if any comments will take a look this afternoon.  (got booster yesterday, moving slow today) Does this relate to #43632? I don't think so. The all False case is an empty not a boolean indexer when jumping into the setitem logic thanks @phofl 