How to plan IA for a directory of content thats good for admins and users
a) There are a definitely a few ways to handle this, but I would recommend the following. Put your Countries and Cities in a category group, nesting cities inside countries. Your Fishing Port section should be a Structure, since the entries are not time dependent like entries in a Channel. All you would need is a single category field that relates the fishing port to a city.

b) This can be done with custom routes, as long as each Fishing Port entry is related to one city category.

As for organizing the entries in the admin, you can make use of the modify entry sortable attributes and the modify entry table attributes hooks, which allow you to add an attribute in the sort dropdown and add different columns to the entry view. With this, you can add a City and Country column to the structure listing.