Align cython and python reduction code paths
Get rid of a few of the small behavior differences between these

(entirely disabling the cython path leads to 4 currently-xfailed tests passing, so there is still some subtle difference after this)