REF: Block.putmask dont use split_and_operate
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] 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

I find this much clearer.  Along with #40256 we'll be able to get rid of split_and_operate altogether