Your question title and actual questions seem to be unrelated:
- Can hosts join more than one swarm?
A host would have one dockerd engine, and be in a single swarm. The dockerd can only be in one swarm. Someone might say "you can install docker engine twice in different locations" but that's highly unusual and I'd say an anti-pattern, and not supported by docker, so lets just say "no".
- Is there a way to use the same machines to run different service stacks?
Yes, that's the goal of an orchestrator like Swarm. You can run many services and stacks on one or more hosts.
(note that a task is a replica)
- If it is, how are the swarms initialized/joined?
I'm not sure about this question. You create a swarm on a single host. That enables the swarm features in the docker engine and lets you create many networks, services, stacks, etc. Then you can optionally add more nodes to that swarm to spread out the work. One swarm can have one or many nodes, and one or many stacks, which can have one or many services, which can have one or many replicas (tasks).