Похоже, возможно вы можете использовать одну из "идеальных утилит хэш" там. Они тратят некоторое время на оптимизацию хеш-функции для конкретных данных, поэтому нет коллизий хеш-функции и (для минимальных совершенных хеш-функций), чтобы в хеш-таблице не было (или, по крайней мере, нескольких) пустых пробелов. Очевидно, что он предназначен для создания редко, но часто используется.
CMPH утверждает, что справляется с большим количеством ключей. Тем не менее, я никогда не использовал его.
Есть большая вероятность, что она генерирует только хэш-функцию, и вам остается использовать ее для создания структуры данных. Это не должно быть особенно сложно, но, возможно, все равно оставит вас там, где вы сейчас находитесь - поддерживая хотя бы часть кода самостоятельно.