Any Discourse features that could help us avoid users posting in other categories if they don't have access to the correct one?

Yes. We ended up scaling the community to be several times larger, so it has become rather exhaustively manual to moderate them.