The largest is the base sprite, which is 32x64 at most. The rest range from 32x32 to 8x8. But there 5-8 sub-images per sprite, 8 sprites per direction, and multiple different animation sets. So they're not particularly large. But to be honest, I haven't done a page preview (that takes as long as building all of the texture pages), so I can't actually confirm they fit on a single page, but I've set it to 4096x texture page size.
There is no way all of your player sprites fit on a single 4096x tex page. It doesn't take 20mins to compile and load a single 4096x page and your number of around 10k player sprites confirm it also. You're player sprites definitely are created on many 4096x pages even though they are all in the same texture group.
Given this fact my original suggestion still stands that if you were to split your player texture group into several groups "tex_player0, tex_player1 etc" you would not be seeing a performance decrease and will be getting faster recompile times. How do I know this? Its because you have no idea what parts of your character are on which texture page. Because they are all grouped in the same tex group GM takes all the sprites and packs them the best it can splitting it up if it has to.
Consider this:
Not knowing fully your game, if you have a base body, clothes, accessory, and a hat, all 4 sprites could be on 4 texture pages with your current grouping in which case you will have 4 tex swaps. However, if you break your player tex page up into many smaller groups that you know will all fit on a single tex page then you can save the swaps. For example:
tex_player0 contains 10 complete player costumes and that's all you assign to it
tex_player1 contains the next 10 complete player costumes and that's it
Now when you go to draw your player you
know a complete costume is all found on one texture page no matter what and you will save your swaps. Now you are manually grouping your current mass grouping of sprites into organized tex pages and you will have the same number of tex pages (not that the number of tex pages really matters on its own)
However! If you allow your player to mix and match to create an infinite number of unique costumes then there is no way you will be able draw your character with one swap. Reason being is because the costume the user decides to create is random and the parts could be on 4 different pages. You have no control over what the user will pick to be able to organize your tpages effectively for swaps. At that point just create multiple groups to break things up to make your recompile times much shorter
Also, I don't think you have any reason to be using 4096x tex pages. 2048x is perfectly fine for the size of your sprites. Especially if you aren't able to optimize for swaps the smaller tex pages will be quicker to swap in and out because they are smaller