It sounds like you are experiencing desynchronizations. This is almost certainly due to one or two settings being different on your end and your friend's end: Rope Knocking and/or Blood Amount.
When joining a game via WormNET it is not possible for these settings to be out of sync, because they are associated with what channel you enter (#AnythingGoes, #PartyTime, etc.) but with Direct IP, sync of these two settings is not directly enforced. We've taken some steps to make W:A less likely to let these settings go out of sync, but apparently it hasn't been enough because people have still been experiencing these types of desynchronizations.
Here's how to avoid it: When playing Direct IP games, always have the host host W:A either on WormNET or by using a "wa:host" URL ("wa:host?Scheme=Pf" for Rope Knocking=100%, "wa:host?Scheme=Be" for Blood Amount=100%, "wa:host?Scheme=Pf,Be" for both) and then have the host type the "/url" command to put a URL for clients to join in their clipboard, which they can then paste to each player they invite to join their game as a client. This method gives the game a Game ID which W:A checks to make sure all sides used the correct URL.
The host should not host the game by clicking "Direct IP" with no IP address entered in, or by launching W:A with a "wa://" URL. This method results in a blank Game ID which allows Rope Knocking and Blood Amount to be out of sync. (And clients should not be able to join the game by entering the host's IP address next to the "Direct IP" button and clicking "Direct IP".) A WA URL can be launched simply by "running" it using Start -> Run.
I intend to fix this issue in the next W:A Update, but in the meantime, hopefully the above solution is one you and your friends can use.
BTW, I don't know anything about Hamachi. Does it integrate with W:A in any way?