Use a tolerance to decide if a value is less than the threshold

Adding a small value to the threshold prevents weight deltas that are
very very close to the threshold to not trigger relocations. These
deltas can be rounding errors that lead to unnecessary relocations. In
practice this might only happen under very rare circumstances.
In general it's a good idea for the shard allocator to be a bit
more conservative in terms of rebalancing since in general relocation
costs are pretty high.

Closes #4630