Instead of adding a dependency on a second query runner, I think it would be cleaner to implement the merged results caching as art of the ClientQuerySegmentWalker, for instance by creating a CachingClientQuerySegmentWalker.