Parallelize `engine_redistribute`
Started working on this in the redistribute
branch.
Turns out quite a bit of this has been re-written since I last looked at it, so I'm still trying to wrap my head around what the expensive bits are, and if any of them could be avoided as opposed to optimized.