BUG: Series[dt64tz].__setitem__(mask, different_tz) raises
- [ ] closes #xxxx
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

sits on top of #39650

after this we'll be ready to cleanup/de-duplicate some of the putmask/where methods