Holy shit, it worked. I removed the entire XMLPrinter class from tinyXML, plus a few functions from XMLDocument which relied on this class, and the launcher now boots again. What's more, the hans shortcut code I merged from smea's launcher actually works. I've just booted Mario Vs Donkey Kong Tipping Stars from a HANS shortcut. I'm going to carry on working through and stripping out unneeded code as it's probably good practice anyway, and will delay the time it will take for this to happen again
I honestly didn't think this would work, since the binary was still 1.4MB. Clearly the size of the file isn't the issue. It must be a ctrulib limitation on the number of functions, pointers, variables, or a combination of these which you can have. It could even be lower level, that a binary can have only a finite number of instructions in order to fit into the memory space available.
I'm so relieved right now, I can't even tell you.