DataFrame.__setitem__ performance regression with object dtype
This is between 0.20.3 and 0.21.1. Haven't narrowed further yet. Note that

- It's specific to setitem, getitem is fine
- It's specific to object dtype


```python
In [1]: import pandas as pd
   ...: pd.__version__
   ...:
Out[1]: '0.20.3'

In [2]: df = pd.DataFrame(index=range(1000), columns=range(100), dtype=object)

In [3]: %timeit df.loc[0, 1] = 1.0
132 µs ± 2.56 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
```

```python
In [1]: import pandas as pd
   ...: pd.__version__
   ...:
Out[1]: '0.21.1'

In [2]: df = pd.DataFrame(index=range(1000), columns=range(100), dtype=object)

In [3]: %timeit df.loc[0, 1] = 1.0
1.64 ms ± 70.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

```

This is present on master. I haven't tried profiling yet.