You should not need any special code for subregions. Afaik they just show a special marker, but they're not different levels. So your regular follow code (CharacterFollowCharacter) should work just fine.
For region swaps, I think this should work:
IF
CharacterEnteredRegion(_Player,_Region)
AND
DB_CharacterHasFollower(_Player,_Follower)
THEN
CharacterTeleportToCharacter(_Follower,_Player,"");
Make sure both _Follower and _Player are global.