REF: only fallback to masked op for object dtype
While investigating https://github.com/pandas-dev/pandas/pull/40727, I noticed that we are often trying `_masked_arith_op`, while it will end up giving the exact same error (for example when using ints, which don't have NaNs). 
From what I understand, I *think* that, in theory, we only need to fallback to a masked version of the op when having object dtype (I might be wrong here, though). So this PR tries that.

For numeric dtypes, all operations should simply work with NaNs? 
For object dtype, we can have NaN or None, which doesn't necessarily work out of the box, so here we need to fallback to a masked operation. 
ExtensionArrays don't end up here, and datetimelike dtypes get wrapped into EAs before getting here.
