PERF: improve efficiency of `BaseMaskedArray.__setitem__`
This somewhat deals with #44172, though that won't be fully resolved until 2D `ExtensionArray`s are supported (per the comments there).

CC @jbrockmendel

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [ ] whatsnew entry
@alexreg status here? pls merge master as well @jreback Sorry, haven't had much time lately. It would probably take me a while to properly wrap my head around the testing framework and write good tests. Ideally someone else could step in with that, but if not, maybe I'll get to it in a month or two.

I rebased on current master, however, and pushed that. (Nice and easy.) > Ideally someone else could step in with that

None of us are going to write tests for you, but we will [help](https://github.com/pandas-dev/pandas/pull/44186#discussion_r740343732) you through getting the hang of writing them.

```
def test_descriptive_name():
    obj = pd.whatever()
    with pytest.raises(something, match=expected_exception_message):
         obj[0] = some_invalid_value_that_doesnt_raise_now_but_does_with_your_bugfix
```