fn weak_hash(key: u32, salt: u32, n: usize) -> usize
Hash the 32 bit key into a value less than n, adding salt.
n
This is basically the weakest hash we can get away with that still distinguishes all the values.