Don't drop critical events just because we want to limit them, instead enqueue them and add them back later. Fix a few thread contention issues.