You arn't working with apps that people have lost the source for (yes, it happens) or third party apps that arn't supported anymore (yep, happens too), or just poorly coded third party apps that refuse to change their code.
As for the solution, this is a somewhat tricky one, as the NS will break down a response into separate fields, and allow you to touch each one separately. Dropping the 4xx/5xx responses would be easy:
add rewrite policy drop_4xx5xx "http.RES.STATUS.GE(400) && http.RES.STATUS.LT(599)" RESET
This will basically force a RST anytime the server replies with anything between 400 and 599 as the status code. This may be your "answer", in that you arn't rewriting, but you will insure that the webservers don't generate the errors to the outside world. It seems a fair compromise to your philosophy of not doing rewrites or heavy content management on the LB, yet insure security policies are met. The app programmers can then fix their code.
The Oracle