Yeah, the spawn menu shouldn't affect XGUI at all-- in fact, XGUI is designed to replace ULX's current menu, so if ULX's menu works, then XGUI should too
I checked out the banlist and tried it with XGUI on my server.. And here's what I found out:
With XGUI, we're essentially running into the same problem with ULX's menu. The problem isn't that there is too much data to 'process' (which I may add, the ban information from the banned_user.cfg ONLY includes STEAMID and time.. and since most of the times are 0 for permaban, there's almost absolutely nothing to process). The problem is when the server tries to send all of the ban information to the clients. ULX sends it when you open the ban menu, XGUI sends it when the player joins. However, since there is so much data to send, garrysmod calls an "infinite loop" on it, and cancels the function, so it never finishes (thus, both XGUI and ULX's ban menu don't get the message that all of the ban information has been received, so it sits on a loading screen).
I am currently planning a fix for XGUI-- The server will split the banlist by ULX bans and source bans, and will then send the ULX bans, and the source bans IF there are 50 or less source bans. If there are more than 50 source bans (or in your case, a couple thousand), then it will enable an option on the clientside XGUI to retrieve and view the source bans if/when needed. (I'll have to use a more reliable chunk method of sending the information, to prevent garrysmod from infinite-looping-- and I'll do it in a way that it shouldn't block use of the rest of XGUI).
Does that sound good to you? I'll probably be able to have this fixed up and released sometime tomorrow.
Also, because XGUI is very soon going to replace ULX's default menus, there will most likely be no planned fix for the normal ULX menu, so if you're getting any lua errors or issues opening XGUI, let me know!