How about this:
First check it the normal way, also taking the maximum patch number into account.
If a patch with a number higher than the maximum comes in that also changes tests, then you run the whole patchset again.
If a set is not complete after x hours after the last patch has been set (not the first), you either send a reminder to check it, or you just run the tests anyway, even with an incomplete patchset. If it fails, that could also be a good thing in case someone actually forgets a patch.
If there are two incomplete patchsets after x hours, and they would fit together perfectly, then merge them, and run the tests. If it fails, that means that the set(s) itself is/are invalid.
If someone sends a try 2 for a patch (with tests), run the whole set again (in case you weren't already doing that). This only after x hours or minutes, because there could be more patches coming. If it runs too early, or a try 3 for a different patch comes in, always use the last try in the next run. This shouldn't be a problem, because extra tests don't hurt (unless we get over 300 patches a day or something).
This would reduce work to a minimum, and shouldn't leave any patches behind. Also, in the time of waiting before running tests in case of invalid patchsets, one could still go to the UI to run them or change them.
Sven