in C, if you do
uint32_t i = 0xffffffff;
i >>= 32;
then the answer is 0xffffffff, not 0 as you might expect. Let's shift it by
less than 32 at a time, which will give the right results. This fixes a
rare infinite loop when counting the bits in the hashsplit.