pipeline the 'to' endpoint using an in-memory queue between a reader thread & a writer thread.  halve roundtrips by making the 'from' endpoint able to progress on to the next block of rows itself, sending back exactly the same format of hash command (and using the same format for rows responses so that the 'to' endpoint can be essentially .memoryless as a bonus)