The previous implementation had the problem that the cache
could eventually evict (and delete) a ChannelSelector
object that was still being used. With smart pointers
the ownership is shared object is deleted when it is
no longer in use.
Fixes partially CAS-12895