You dont need the characters physically in the level. Your GameMode is spawning the pawns and the player controllers. Override the functions there to spawn different pawns for each controller at the correct starting positions.
This is the default setup of local player controllers as long as you have Project Settings → Maps & Modes → Local Multiplayer → Skip Assigning Gamepad to Player 1. (There you can also disable split screen)
Then it’s just a matter of setting your Enhanced Input to work with both keyboard and a controller. The hardware input will be correctly assigned.
There should be no problem making your own Player Controller. I’m not sure what exactly is that you are asking about child blueprints. I guess the answer should be “Yes” since everything is pretty much “child blueprints”…
You can read more about the gameplay framework to understand the role of player/AI controllers here: Gameplay Framework in Unreal engine | Unreal Engine 5.4 Documentation | Epic Developer Community