Well when you go out walking, be sure to go out in a STRAIGHT PATH. Try not to venture left or right. Just go down a road and take it to the end, as the gps system has shown to take your starting point, your end point (after x amount of minutes), and compute the shortest distance possible, disregarding walking along streets.
I haven't really experienced this issue of not hatching, or I haven't noticed it. Perhaps its also just your connection that suffers, or perhaps its really a bug. Either way, I've never had an egg stall for more than a day like this.
(Edit)
I know this system is weird and unusual, but it's been reported that way. It's like the different between Distance and Displacement, in physics terms. You run a lap around a track. Distance says you ran 400m, but Displacement says you ran 0m because you're in the same spot.
http://comicbook.com/2016/07/21/pokemon-go-eggs-may-not-work-the-way-you-think/ This is just the first site I saw that mentions the tracking system, and the information is conclusive with reports.
If you need more information, just search "Pokemon Go eggs tracking system" in google. Click any page that relates to misconceptions/untold secrets/incorrect. These are the pages that acknowledge how the system is different from a normal GPS
Your eggs not hatching is independent of your mode of transit. This means that whether you are on a boat or not does not affect your eggs hatching. What does affect distance being recorded is connection to the internet, travel speed, and being soft banned.
Connection to the internet - when you visit a lake, often you are going to remote places with no wifi and poor cell coverage. Thus, if the app cannot accurately track your location and connect to Niantic servers, you distance will not be tracked for your eggs. Check your available networks and reassure that you still have ample data coverage on your boat.
Travel speed - it is now confirmed by a large number of players that traveling too fast can affect egg hatching. It is a general consensus among players that the maximum speed for hatching eggs is ~10-12mph (15km/h is about 9.3mph), so perhaps consider slowing down, as you are traveling at just about the maximum speed for tracking egg hatching distance. You can reference this question for more about speed: How fast can I travel?
Soft ban - if you have been recorded for cheating via GPS spoofing or any other form of cheating, you will likely be soft-banned (or banned for a short amount of time). When you are soft banned, you cannot catch Pokemon (they all run away), some distances don't track, and you can't get items from PokeStops. Refer to this question for more about soft bans: Why can't I catch Pokemon in Pokemon Go anymore?
In addition, if it worked yesterday and doesn't work today, it might just be a server issue with Niantic, and will resolve itself in time. It's a bit hard to conclude anything with only 24 hours of evidence, but wait a little longer and try again. If your distance is still not tracking, consider one of the above prognoses.
Best Answer
As long as your app is working properly, you simply need to walk with the app open. It's more likely to work if you walk outside in a straight line (vs. inside in circles) since it is likely sampling your GPS location every N seconds to determine distance.
Your experience could be caused by the app getting into a semi-frozen state where you can still perform most interactions with the app, but some aspects are broken. Some indications of this I've seen include the animation in the upper-left corner going continuously and images not loading for pokestops.
I'm able to fix by killing the app and restarting. To kill the app in Android, open Settings, select the "Apps" menu, scroll down & select Pokemon Go, then touch "Force Stop". It will warn you that the app may misbehave. Say "Ok", then open the app normally---you should see the Niantic logo initially.