I've written a bit of documentation trying to explain what everything does... I probably miss a lot of important stuff and mention a lot of obvious stuff too, but at least it did lead to me discovering several issues.
The biggest change was to base +V_int (now badly named!) off +3.3VA (analog rail) instead of the battery. This let me use a lower clamping voltage, which in turn let me use it to power the analog switches – which fixed an issue of them having a significant overvoltage applied when significant clamping occurred. It also means I only have two ground rails now.
The other notable change was to the anti-aliasing filter. Previously I'd messed up the formula, and had the capacitors several times too large. I have also changed it to be a differential filter so that the ADC doesn't affect either the signal or common line unduly.