I noticed the following:
If you have two ports and at least two ships which transport wares between these ports they will meet each other somewhere. As the travel path seems to be always the same (I assume the shortest distance) there is a moment when the ships are on the same spot. This looks a bit strange, even more as ships are quite large. I think its the same with carriers and donkeys, but as they are much smaller, so you can imagine they pass each other side by side.
For the ships I'd like to suggest to implement some kind of evasion maneuver. On or both ships could change its course a bit so they can pass without a "collision". Unfortunately this doesn't work if the water path is too narrow. Is there a minimum width of a water passage for a ship to travel? If yes this could be increased a bit.
When the ships do not move, every ship has its own spot where it is waiting. But it looks stringe when every ship moves a bit. Maybe the algorithm should be improved.
An evasion maneuver sounds quite sensible. I am wondering why ships need no place when they move. AFAIK, they are bobs like soldiers. Two soldiers are sometimes at the same spot, but normally, an army needs a lot of space.
There is a minimum width of water passages for ships: The node the ship is on has to be completely surrounded by water (all six tiles). This means that travelling by foot is not possible over that passage.
I do not know if increasing the minimum width is sensible: If you have only one ship, it still can drive through. Problems will appear only if two (or even more) ships want to drive through the passage.
Please note that IF the evasion maneuver is implemented, there might appear "Stuck ships" problems similar to soldiers, e.g. in bug 923129