You can also try to override behavior of default system, by overriding function in GameMode, like Spawn Default Actor. But no body force you to use default spawn system, you can set default pawn to none, spawn actor manually and possess that actor manually.
If I am correct you are wanting to change the default pawn class for the game mode? One method would be to setup an entry level which just contains a menu where you choose the class that will be used in the level you are loading. Another option would be to have the game start normally and then just pause the game on event play. Then you could have the player choose their pawn class at this point while the game is paused. Then spawn the selected pawn class and manually possess it. In this case you could leave the default pawn class empty.
i think i had something like setting the default pawn working at one time but it involves setting a variable in the game instance and having a separate game mode for the main menu screen. so it should be possible.