1. The replacement scheme to use. Bruce Moreland's site says this at one point-
What's the problem with "outdated" nodes? If the hash key matches, it means the position is same(in most cases) and a deeper search should be better always?If you use the "replace if deeper or same depth" scheme, your table might eventually fill up with outdated deep nodes. The solution to this is either to clear the table each time you move, or add a "sequence" field to your element, so the replacement scheme becomes, "replace if same depth, deeper, or the element pertains to an ancient search".

2. The move ordering. Currently, what I'm trying to do is put the best move from TT in front of moveslist and then sort the remaining moves using (score of each move - moving piece value).
Score of each move is a variable in the move object and it's set like
10 if target blank
20 if target pawn
40 if target bishop/knight
60 if target rook
100 if target queen
This seems okay for higher valued targets. So, pawn capturing queen comes first, then bishop or knight capturing queen etc. But towards the end, it seems bad.
A pawn capturing pawn comes before queen capturing pawn or a pawn moving forward comes before queen moving. What should be the way to sort these moves?