So first of all, I really like this idea. I tried it once or twice a long time ago and I'm still fantasizing about it. With that out of the way, let's move to my 2 cents.
Make the NPCs well-rounded characters
These NPCs aren't just some recurring characters, not to mention some one-time ones. They're gonna be with the party for a very long time. Whole adventures, actually, which is quite a lot. This means that they should be really well rounded. Your players should get to the point of distinguishing between them after just a few words, especially when the NPCs are the ones who spark the conversation.
More than that, though, they should be more than cardstock characters. You want them to express feelings, you want them to have goals, and you want them to react. Otherwise, your players will have hard time connecting with them, and this is far less good. As a rule of thumb, make them round and distinguishable from each other. A wizard is different from a fighter, true, but we want a greater difference. The prince will have hard time adjusting to the wilderness and to the bugs in his bed. The merchant will always stop to collect the better loot so she'll be able to earn much from those bargains. Classes are a dirty way to distinguish, but they're better when accompanied by some other traits.
Don't let them speak right one after the other
The players aren't coming for the game as an audience for a theater, they're here to play, and hearing NPCs talk with each other is far less fun. If you must make them speak between themselves, make it as quickly as you can and immediately move on. If you can narrate the conversation instead ("they're talking about what happened, Elsa thinks that they should go east and Hans thinks that they should go west…"), it is far far better.
Give the players the center stage
The players and their characters are the real stars of the campaign. The NPCs are extras, and should always be seen like for you that when you're playing them. If they're far cooler than the PCs, or if they have much more screen time, something is off with your campaign. It's better to not have the NPCs with the group than to let them illuminate and shadow the PCs.
They're not all knowing
Think for yourself what is more important, a character who knows everything or a character who knows only part of them. For me, it is the latter. That comes from one simple thing: There's no drama when everyone knows everything (it is not entirely true, but that's for another time). Make them say sometimes stupid or idiotic things, make them come to wrong conclusions, let them make mistakes. They're not a kind of supernatural deity who knows everything, but humanoids who are as humane as the characters, and they should be played this way.
Make them important for the story
They should always be important to the overall story, in one way or another. In one of my more successful D&D campaigns, the characters had to escort a princess to a neighboring kingdom through the forests. Having to keep her safe from one hand, and dealing with all of her complaints from the other one made the game so much richer. They don't have to be important to each and every one of the scenes, but they should always be important for the overall story. Otherwise, the characters may just leave them to rot one day, when things will turn the wrong way.
And an end
Hope I succeeded with helping you a little bit.
As a fan of the Suikoden franchise, I also like creating basic NPCs that follows the players (the Smith is a common one).
You seem to already avoid the pitfalls of most GMPCs: disliked by PCs, and abnormally strong and awesome. That's great.
Since your problem is mostly related to combat, I would suggest an option I use when NPCs become good enough to be useful in combat (otherwise they stay in the back, or simply give a passive bonus): let your players play them.
Make a character sheet, control the character out of combat, and when combat happens simply hand the sheet to the players. Either have one player control it (the one most familiar with the rules, or whose character cannot play at the moment), or even make it a group thing with all players (you included) deciding what the NPC should do.
For lazy players, consider statting the NPC as a monster, with a couple at-wills and some recharge powers, just like a monster. The (significantly) reduced complexity of the character might make them less reluctant to take on the additional effort of managing the NPC's combat.
However it's statted, handing over control of the character makes it easier for you to avoid most bias, and for the players to better relate to the NPC.
Best Answer
I've done this a lot in the past editions; in our current game our DM has one of us running an NPC.
I've seen it work very well.
Two (possibly three) benefits:
Caveat
Now and again, since these are NPC's, you have to step in as DM and offer up "your NPC won't do that" when, for example, the player decides that's it's time for the NPC to make a suicide/kamikaze charge into certain death ... (unless you have already determined that the NPC has a death wish ...). You'll also need to fill in various background things that fit into the story that only the NPC's might know.
Since you only have two players, this also allows you to set up encounters closer to the "basic" game design threshold of 4 PC's for the XP budget in the DMG. In time, you can (if the NPC's survive) allow the players to each run 2 PC's. That's going to be something you and the players need to discuss and explore as an option if it arises. (Done that frequently in the past, it can work ... )