Cleanup is indeed an art when you go with this approach. Namespacing helps a lot, as well as little things like randomizing individual queue names such that test run B never knows that infra from run A (that may still be hanging around from a failed cleanup) exists.