Nested shard name memoization hash

Instead of generating an Array each time the method is called, which even acts a *slow* Hash key, we can use a nested Hash, using each element of the now removed Array as keys.

Oh, and #options can be memoized. It is practically a constant.