I just finished part B, albeit that my answer is incorrect.
I started with a random tile, that I defined to be aligned and gave it location (0, 0). Then found all its adjacents, aligned them, gave then the correct location (-1,0 0r 0,1 etcetera, and went on with these adjacents in a queue.
Then tried to find one or more seamonsters in any of the eight possible orientations of the big tile, and that should do the trick.
A lot of possibilities to go wrong somewhere: in the
test I found no seamonsters. As you say, in principle not difficult, but very very much work.
Hope I find the bug tomorrow.