Theoretical question about Zobrist hashing and chances of collision with slight modification
it may be better to store them in separate hash table. or, if you need them in the same table:

tmp = position
if (makeItUnique)
    tmp := [memory address of position object]
hash = zobristHash(tmp);


It's better than your current code since it will avoid collisions of objects with the same position AND similar memory address (the definition of similarity here depends on how you use the hash value to address the hash table)