Ah, that makes sense now. I'll take another look at your solution and see if I can find a way around the problem you describe.
I played with #1 yesterday, and was able to get a test runner to start another test runner in another process and communicate the results back, and am halfway through porting my stuff to work doing that. I'm confident that will work, but it has some other problems like making debugging slightly more tricky to set up.