Add a retry mechanism to the getContent mechanism

I am certain there are more opportunities for this
Log in addition to throwing

It wouldn't be the first time someone swallowed an Exception
Extract the bulk listener to inner class

It is much easier to read as a "top level" class
Persist the seen list as each key is indexed