Since we have to take a lock on bucket, the use of an atomic was less than ideal

Each bucket now keeps its own counter, which jumps by an offset (the # of buckets)
This guarantees that each bucket generates a unique id.