If there are more than 32 characters with the same stats, more than 32 followers in a category, or more than 32 follower categories, the game will hang upon trying to present the character select menu.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
It's worth noting that the "Increase MAXSKINS to 1024" merge request does fix this, though I'm having trouble identifying how it does so, exactly. My gut says it probably has to do with MAXCLONES, since that's the one constant I've identified in the select menus that currently comes up to 32 (being that it is MAXSKINS/8), but I'm having trouble tracing a direct line to the exact fix from examining the diffs and poking through the current master branch and I'm having trouble identifying clearly whether MAXCLONES is responsible for anything on the follower end of things. Might be worth asking troy236 directly.
(MAXCLONES also should just throw up a console error when 32 skins are exceeded in a character slot, but that doesn't seem to be happening?)
A comment near MAXCLONES' definition seems to indicate it's used for memory management, but it's not immediately obvious to me how. Might be worth trying a build with MAXCLONES increased to match MAXSKINS and seeing if that changes anything.
Another concern I have is to do with the data types for i and j inside M_CharacterSelectInit they are UINT8(255) despite MAXFOLLOWERS being above the max size(1024). Meaning if you load enough followers you are likely to go above that limit. Try making those both UINT16 and see what happens
That's probably exactly why this is fixed in the 1024 skin limit branch, now that you mention it - those absolutely had to be bumped up to UINT16 to account for that branch's changes, which coincidentally fixes issues with follower icon loading. If not that, then certainly any other UINT8>UINT16 changes that are either directly present in that branch's play-char-select.c or hooked into by it should be examined.
Just tested it, a modlist that caused the character select screen to hang in release version 2.3 doesn't do so in a build with variables i and j in M_CharacterSelectInit changed to UINT16 and no other changes. Not worth creating a merge request IMO as !52 already addresses it.