memoize computeShard

Part of calculating the md5sum is `MessageDigest.getInstance()`, which
is a blocking operation. Memoizing computeShard stops us from calling
this too often and is a massive speed up.
It should be changed to match the number of astyanax connections, but wasn't meant to be in this PR.