The data structure seems correct. The only comment I have is that if you switch to using a 16-bit representation for the move, the size of a hash entry will go from 24 bytes to 16 bytes (this depends on the compiler, of course).
I know, I planned to change move encoding not just for the hashentry, but also for move generation. It will take some time, so i'll do it when i can.
Anyway now a HashEntry is a 18 bytes object.
Can you tell me something about what i wrote in my previous post?
The last thing I have doubts about is principal variation: I'm triyng to improve move ordering and it seems that principal variation moves are the most important moves to try during alpha-beta search, but, with transposition table implemented, aren't them already the first moves tried (best moves)?