Thought so. I did a bit of guesswork. Assuming that the random traders use the same dialog files as permanently defined traders, and also assuming that random traders, like other random spawn, are handled by a file called "LEnc_monsters.c", I had a look in that file for any reference to the dialog file, and sure enough, there's a function called 'Random_item_traders' which is called in the section which deals with the consequences of extra crewmembers. It populates any "merchant" locators in the area with random traders. But first it checks whether there's anyone already there. The question then became, why are random traders spawning on top of the existing traders in Charlestown and Guadeloupe, but not on top of the traders in Kralendijk port nor the women outside the town hall?
The reason is that the "merchant" locators in Charlestown and Guadeloupe are a long way underground. A character who is placed on a locator which is not at ground level is zapped automatically up or down to ground level. 'Random_item_traders' then finds nobody on the locator and spawns a random trader - who then zaps up to ground level, on top of the regular trader. Shifting all the "merchant" locators in both Charlestown and Guadeloupe up to ground level solved the problem.
Download this, unzip it, and copy it into place.
Now I know what to look for, fixing it is fairly easy. All I need to know now is
where to look. That's your job.
If you find any more double traders, let me know where they are, then I'll check the "merchant" locators there.