Here's another possible approach - rather than check for cabin type, perhaps have you keep your original ship or be stuck with the tartane depending on what you say to Malcolm / Gwen. If you say something reassuring, the crew calm down and you get to keep your ship. If you say something defiant, you're kicked off the ship and stuck with the tartane. The Rogue / Gambler start effectively does this, though it's not obvious. If you pay the jailer, you follow a path which leads you to the heavy lugger. If you wait for your crew to rescue you, you follow a different path which leads you to the fluyt. You could skip all the intermediate stuff and go straight to being given the tartane if you said the wrong thing.
SetRandomNameToCharacter doesn't work for quest characters - it specifically looks for the attribute "questchar" and does not randomise the name if that's set. You'll just have to choose a name for the alternative character if you're going to have someone different based on the cabin type.
Whether you have the tartane or a larger ship, the ship log is still normally used to say how you got it. There's nothing wrong with having the questbook tell you about the sword. I'd be inclined to define your Welsh sailor in "PROGRAM\Storyline\FreePlay\characters\init\TempQuest.c" and have him set to location "", as several other characters are, so he doesn't show up in any other FreePlay game. Then, in "StartStoryline.c", in the Morgen-specific part, put the character somewhere on Cayman. The player can then find him, talk to him, and he could say something more about how to get to the sword. Add a line to the questbook to remind the player what he said, then close down the questbook - or maybe only close it when the player has the sword.