Just made this patch, then realised that I can accomplish what I want by mapping RegionScanner -> Scan in postScannerOpen, then looking up this map in preScannerNext and postScannerNext.
VisibilityController seems to do something similar already using a weak hashmap.
This approach seems a little brittle, since there's theoretically no guarantee that the scanner that is passed to postScannerOpen is the same on that is passed to preScannerNext and postScannerNext. Perhaps we should change the docs to explicitly specify that this will always be the case.
Anyway, since it doesn't involve changing the coprocessor interface, I'll take this approach. The patch to modify the coprocessor interface is attached if anyone wants it. Feel free to close this ticket otherwise.