Most subclasses add unnecessary complexity already, so adding further levels of mechanical distinction is really missing the point about what a class is supposed to be in a class-based game. Barbarian and Paladin should be subclasses of Fighter. It should be sufficient to say that a character is a Paladin, in order to understand who that character is and what they're about.
Mechanical options add to the pre-game character construction side-game, but they don't really improve the game itself in any meaningful way. That fact that you could have chosen to be a frenzied berserker rather than a totem barbarian doesn't change anything about who your totem barbarian is.
It also establishes an extremely bizarre setting, by saying that characters who possess these amazing skills are so common that they've fractured into different factions, and that's... unnecessarily complicated. I don't need a world that has paladins and nature clerics and druids and nature paladins and nature warlocks. It's just overkill. Paladins and druids and warlocks are more useful from a setting-design standpoint if they remain distinct from each other.
Dragon sorcerers should be fire-based, because they have some evil red dragon in their ancestry. I don't want to play in a world where blue dragons and white dragons and copper dragons also have romantic relationships with humanoid races. That's too much.