The problem: Only one of the images is drawn over and over again.
Well that's exactly what you told it to do here. You've told it to always draw the third image (which you even specified in the comment):
If Board(x,y) = 1 Then DrawImage imgcounter, ((x*32)-6),(y*32),2 ;last number determines which counter in image file is drawn
I think you're making it too hard on yourself. For instance, instead of looking at each square on the board to determine if there's a counter there, then what kind, and then drawing it, your entire DrawCounters() function should be something simple like this:
For f.Fleetcounter = Each Fleetcounter DrawImage(imgcounter, f\x, f\y, f\image) Next
...where imgcounter is your 160x32 image (you should change the 43 to 32 in your LoadAnimImage statement, by the way), f\x is the x position of the counter, f\y is the y position of the counter, and f\image is the index (0-4) that tells you which 32x32 section to draw.
The trick is that you need to make sure that EVERY time you update the location of a Fleetcounter, you need to change that Fleetcounter's x and y value.
As for the Image value, you should set that up (and the initial x and y values) before your main loop, so that's it's already set up when it tries to draw it the first time.
I would also lose the implementation in your CheckInput where you check the board. I would check the location of the mouseclick and then go through each Fleetcounter object, comparing x and y values to determine if one was clicked on. The advantage of this, is that you will have a pointer to the Fleetobject that is currently being selected/dropped, and you can easily update the x and y values.
Let me know if you have any questions.
<EDIT>
PS: You should also enclose your code in code tags (<code> put code here </code>) Just change the < to [ and > to ]