Do we really have evidence that they cause more collisions? I thought the reason
you looked into other hash functions was that the existing ones often hashed to
adjacent keys, which is bad for closed hashing (but good for open hashing
because of better memory locality).
For me, a main reason to get rid of them is because it's simpler to only use and
maintain one set of user-defined hash functions rather than two.
We plan to remove the legacy hash functions in utils/hash.h since they produce
too many collisions and implementing std::hash<T> for non-user-defined types T
undefined behaviour (http://en.cppreference.com/w/cpp/language/extending_std).
We want to use the new utils::HashMap and utils::HashSet for hashing types that
have no specialization for std::hash.