REF: implement Block._split_op_result
Broken off from a branch working on arithmetic performance for `op(df1, df2)`, two changes here:

- implement _split_op_result, discussed before [citation needed]
- change an unnecessarily-deep copy to non-deep