I managed to fix my code. I stripped everything down to a bare-bones Boussinesq model and then added in NCCs and terms slowly.
The matrices build fine, I was able to keep a lot more stuff on the LHS, and after tuning down some of the parameters to match the resolution I've avoided blowup.
It seems a lot of the problem was with Id in my stress tensor when it was dotted with er, causing the azimuthal NCCs not supported error.
I did have to move the coriolis term back over to the RHS due to coupling of r and theta.