I know it's not a direct answer to your question, but I solved a similar problem by setting custom response headers with the list of validation errors, and this allowed me to return a 400 status code with the errors. I only set X-APEX-FORWARD if the request was successfully processed.
If the above won't do, I'm not sure what else to suggest but Mr Divilly has a blog where he describes how to set a custom error page: https://cdivilly.wordpress.com/2015/01/13/configuring-custom-error-pages-with-oracle-rest-data-services/
It seems unlikely that you could leverage this to dynamically embed your error response, but it might bear investigation.
Thanks to rhardey for the suggestion of returning error information in a custom header - I can see that this would work, but unfortunately one of the requirements of the front end that we're working with is that the errors MUST be in the body of the response.
But the good news is that we have found a solution from reading the reponses on this post https://community.oracle.com/thread/3885935
In the exception handler in our PL/SQL procedure for our POST call we are building a string containing a json object holding our various validation errors. We're then passing this to htp.prn.
And rather wonderfully, this is now output in the body of our returned response.