Basically I want something like Dictionary
Two dictionaries, but don't duplicate the items in each.
You'll have a value dictionary, and a key dictionary.
When you call your add method, you'll generate a GUID and add it and the key to the keys dictionary.
Then, use the GUID as a key to the values dictionary.
If you want to add two keys, you'll add another item to the keys dictionary with the same GUID.
Of course this means every lookup requires two checks for the data, but never more, even if you have 50 keys for the same value.
Lookup the guid based on the key from the keys table, then lookup the data based on that guid in the values table.