How can I effectively assign input devices to objects (New Input System)

Hello all!
I am currently attempting to make a local-multiplayer platform fighter similar to smash bros. I’m new to this somewhat, so bear with me!

At the moment, I am doing what I’m sure most people do when they initially look into implementing local multiplayer using Unity’s new input system. Upon pressing a button on a new input device, a new player prefab is instantiated in the scene with that new PlayerInput. You can see below how I’ve implemented some of this.

 [Header("Other")]
    private InputAction _move;
    private InputAction _jump;
    public SlapFighter playerMovement;
    private InputActionAsset inputActions;
    private InputActionMap player;
    public Transform playerTransform;
    Rigidbody rbody;


    private void Awake()
    {
        inputActions = GetComponent<PlayerInput>().actions;
        player = inputActions.FindActionMap("Player");    
    }
    private void OnEnable()
    {
        _jump = player.FindAction("Jump");
        _move = player.FindAction("Move");
        player.Enable();
    }

My issue with the system is that spawning in a new player prefab upon pressing a new button is extremely clunky and looks terrible in the game. Ultimately, I would hope that there could be a character selection screen where players can select their character and then both are automatically instantiated at the start of the next scene. But right now, I simply want to have two players already instantiated in the scene, and for them to each be assigned a player input.

How can I assign a player input of my choosing?
I have looked through dozens of threads, and viewed a similar number of videos and I haven’t seemed to find one that was able to help me in the way that I need to be. To put it another way, right now, if I connect a controller, my keyboard is assigned to the first player, and my controller ends up creating a new player object in the scene to take that new input. My desired behavior is for me to potentially be able to connect two controllers and assign both of those inputs to either player object in the scene.
This could be through either some sort of selection screen, or even just manually in a script on scene load assigning the two controllers.

I should mention, my implementation of taking in player inputs involves utilizing different scripts to call actions. They refer back to the player movement script.

Thanks in advance!

I am searching for an answer to this one also. I don’t want to use the PlayerInputManager to auto-instantiate my players. I want full control over this to manually do my associations at runtime.

Anyone have any hints?

// With PlayerInput.
playerInput.SwitchCurrentControlScheme(gamepadToUse);

// Without PlayerInput (InputActionAsset or InputActionMap).
actions.devices = new[] { gamepadToUse };