A couple of things you could try (I speak only for UnrealIRCd):
Set the channel mode +R (this way, only people who have identified can join) (via /mode or /cs set mlock)
Look for the UnrealIRCd module "m_restrictedjoin" by a guy named "stealth" - unregistered users cannot "create" (join empty) channels
Look for the anope module cs_setmodeunreg (by this katsklaw fellow) and change the modes to +R (this way, ALL channels, unregistered or not, are set +R)
All of these modules will address the issue of the "server-side" implementation of the features you wish to achieve.