In general I use a Ref Counting system similar to how Perl does GC - I mentally keep a tally of how much external information is needed for an email and when that reaches zero I reply. This has the benefit of timeliness in much the same way a Ref Counted GC guarantees timely-destruction on scope exit.
The disadvantage is that, like Ref Counting, it's a lot of mental accounting and constant work to keep it under control. It tends to leak slightly so that the number of unhandled items slowly creeps up or some drastic event happens and it shoots up. In those scenarios I tend to do roughly the same as jwz
"When my main Inbox folder hits 2000 messages, I sit bolt upright for 16 hours and cause it to contain less than 200
I should probably start using a more modern scheme such as a Generational (sometimes known as Ephemeral) Concurrent Garbage Collector. This would mean that certain emails of different ages or priorities would be dealt with sooner and the rest when I have idle time. This sounds ideal except that it still requires an initial triage run and would also require much more sophisticated scaffolding for accounting and record keeping.