ConcurrentHashMap synchronizes on .computeIfAbsent even on hits,
so this does a .get(key) first, which most of our use should
be hits, and then falls back to the CHM computeIfAbsent for thread safe puts.
Also improve concurrency on handler and group collections to use a synchronized
list instead of an array deque for concurrency safety.
This was a useless exception wrapper that ends up making
stack traces harder to read as well as the JVM cutting off
the important parts
Nothing catches this exception, so its safe to just get rid
of it and let the REAL exception bubble down