I can’t answer your questions fully; hopefully someone else will come along who will.
A) As general rule, nothing in Rosetta is intended to be done as a “make one model and you’re done” experiment, because Rosetta uses Monte Carlo sampling instead of something more deterministic that looks for a GMEC. Minimum runs for fixed backbone design should be in the hundreds of trajectories and for flexible backbone anything probably in the high thousands and up. So, it’s entirely possible the code is working right, and you’ve used it right, you just got unlucky with Monte Carlo.
I don’t know what else is needed in 2.3.1, but I would expect that the score result for the trajectory should include the constraint score if constraints were working. Look for a scorefunction term in the score results that has cst or constraint in it?
C) I don’t think the NOE stuff made it into 3.1. I think it will make it into 3.2 which is due any day now.