I think you'd probably write a custom command for this.
A normal way to do this in elisp is a simple while loop for your main search, and at every match you perform a second search, bounded by the desired limit, for your exclusion terms. Depending on whether or not the second search succeeds, add the original match to the results buffer.
You can leverage some of the occur machinery for presenting the results.