I have just rolled back r7319 in which UNION processing was broken. I have tested that rollback both before and after accepting your delta and the delta appears fine in both cases.
It would be nice to have a unit test which demonstrates the issue that you are "describing"
Yes, I agree that the describe code became a bit complex. It would also be nice to have it modified to allow cancellation (basically deferring evaluation until the query result object was in the caller's hands).
It sounds like a worthwhile project to refactor this for maintainability, but (my personal preferences) I would like to close out some other issues first.