Yes, they have to leave the room to join another, you could use the "On left room" to make the user go to a rooms overview layout.
The host position can be automatically taken over by another room peer if a host leaves.
In theory, anyone could be host ... it is how you allow the mechanics to work that determine everything ....
A host could merely be someone who keeps the connections alive, and in the background, without knowing, execute everything needed to have other people administrator the chat rooms.
Imo, the idea to appoint a channel moderator would still require to come from the first host, the one who created the room and then gives someone moderator status. Or, you could have the user details fetched from somewhere else (ajax/php/mysql) which determines if a peer us a moderator.
And if a peer or host has moderator status (some boolean flag), it simply needs to send commands to the host, which executes it for him. (ie a moderator sends a command to the host to kick someone else)