>But coming up with a good Hash Function is proving rather difficult.
Duh. A lot of brain cells have met their untimely demise trying to come up with a good hash function. It's not easy, and I say that from the standpoint of working for a long time and only coming up with only *one* algorithm suitable for use in a hash table. It's usually better to take an existing hash function and work from there.
This has a list of good (and bad) functions that you can look at and fit to your needs.