The most obvious leak in the test suite turns out to be limited to the bisect-based OID storage module. Nothing to do with the real-world system :( . Haven't been able to figure out how the garbage gets produced, the tuples are just part of a big list stored inside the Agent object. The Agent is getting cleaned up, but the tuples in the list just sit there as garbage.
There still appears to be a leak in that test, it's just far slower than it appears with the thousand-or-so tuples building up between gc runs.