Found the issue with my program, the algorithm was mostly right, I just had to modify my if statements when taking things on and off the closelist to include the the if statement whether it was smaller than the previous route, since we only want to take things off the close list if a better route has been found.
A secondary issue popped up when I realized I was incorrectly allocating terrain types, taking the wrong route round the top because my although my water nodes appeared as water they were actually woods and vice versa.