In case anyone else has similar problem, we are going to try:
* Attach another request context to our main one that contains a bean that lets us fail JSR-303 validation within our control - so request fails (so request context not frozen but server side beans are populated)
* Our own RequestTransport and RequestFactoryServlet that can stick mutliple requests (from different request contexts) together so sent over a single HTTP request (independent as far as RequestFactory is concerned)
So with this we send the latest state of the form to the server without any chance of the request context getting marked as frozen and with the same server side request execute other Request Factory requests so the server can use the latest state.
We have a prototype that seems to work. Fiddly things like making sure user actions don't try and fire off a request while the request context is blocked but we were going to queue those anyway.
We would still like a simpler solution though ;)
Regards
Sam