[ArrayManager] BUG: fix setitem with non-aligned boolean dataframe
xref indexing work item of https://github.com/pandas-dev/pandas/issues/39146

This covers setitem with a boolean dataframe (like ``df[df < 0] = 2``), but specifically fixes the case where the dataframe is not aligned (eg `df[df[:-1] < 0] = 2` in the tests). 

`DataFrame.fillna` infers object dtype columns getting filled for a proper dtype, but with ArrayManager internals I propose that `fillna` always preserves the dtype.
