Not a definite solution, but an idea:
Try to join the string of men to a unit instead of a group. i.e
{[_x] joinSilent leader heroes1} forEach units heroes2
instead of
{[_x] joinSilent heroes1} forEach units heroes2
I think that the vehicle and/or group may be the problem. If that doesn't work you may always try:
{[_x] joinSilent driver zodiacName} forEach units heroes2
or similar variations on the same theme.
EDIT: It's not so weird after all.
join and
joinSilent commands must be given where the adressed unit is local. Only then will the effect be seen globally on all computers. There's more info in the
BI WikiEDIT 2: After some real testing. It seems that the join command works if the leader of heroes1 disembarks from the zodiac, before the command is given. Hence it must be a problem related to the vehicle. I don't know if it only applies to boats, or if every vehicle will cause the same problem. I suspect it's every vehicle.