Bezüglich der Performance würde ich das auch eher als fraglich sehen.
Aber hierzu:
Thread-Safe ist es meiner Meinung nicht, weil ich könnte ja mehrmals den gleichen Hash-Wert überschreiben.
Das hat nix mit Thread-Sicherheit zu tun, dass mehrere Threads da einander Dinge überschreiben können.
Thread-Safe heißt, es gibt zwei Threads A und B, die eine Operation auf einem Objekt durchführen wollen. Thread A will opA durchführen, Thread B will opB durchführen. Wenn das Objekt Thread Safe ist, heißt es, wenn die beide es gleichzeitig durchführen wollen kommt eins von folgenden zwei Ergebnissen raus: Erst opA, dann opB oder erst opB und dann opA.
Sprich, dass Ergebnis ist dasselbe wenn sie in Reihenfolge durchgeführt werden (man weiß nur die Reihenfolge nicht).
Bei einem nicht Thread-Safen Objekt kann es passieren, dass dabei Murks raus kommt und Stände entstehen, die nicht entstehen würden, wenn man es in Reihenfolge macht.
Mal banal auf HashTable bezogen, wenn Thread A den Wert X speichern will und Thread B den Wert Y, dann ist sichergestellt, dass danach entweder X oder Y gespeichert ist (man weiß vielleicht nicht vorher welcher von beiden). Während bei einem nicht Thread-Safen Objekt vielleicht Z oder null am Ende gespeichert ist.