It's okay to hide the fields if they cannot repeat the action. But you have to shift emphasis (and thoughtfully design) the error explanation / recovery.
If there's a system error, and it's not possible for the user to repeat their action, taking away the fields keeps them from fruitlessly attempting a resubmit.
The question is: What can they do at this point?
I don't know your domain or use case, but you need to convey:
- The user didn't do anything wrong
- It's our fault, not yours
- What they can (or can't) do next
From the Nielsen Norman Group, an old, but still useful article:
Error Message Guidelines
Make error messages clearly visible, reduce the work required to fix the problem, and educate users along the way
Explicit indication that something has gone wrong. The very worst error messages are those that don't exist. When users make mistakes and get no feedback, they're completely lost.
Human-readable language, instead of obscure codes or abbreviations such as "an error of type 2 has occurred."
For your case, you'll have to figure out:
- Can they resubmit the form later? (give them an estimate)
- Can they contact a service rep about this? (provide info if so)
- Can they get to a relevant page (provide a link)
- Are there alternative ways of submitting info (call, email, physical location, etc.)
Put yourself in their position, and work towards surfacing a path to recovery.