So... I feel like a fool.  I could use the LRU cache. Doh!  I think I didn't because I started with ConcurrentHashMap and some expiry handling wrappers, but bailed.  I'll try it wtih our LRU cache.