I’ve not tried this, but it looks like it would work. Use the ‘replace_editor’ filter. Its purpose is to allow plugins to invoke a custom editor instead of the default block editor. Except in this case if the post isn’t meant to be edited by the current user, your replacement “editor” could be in the form of an error message box or something. Return true
from the filter callback to suppress loading of the default editor.
The issue is without an editor, other aspects of the post are still changeable. For best security, those avenues should be cut off as well. It’s generally simple to prevent changes after they’re submitted. Not the best UX though. Better would be to prevent submitting in the first place, but altering back end functionality can get pretty tricky. I’ve resorted in the past to simply hiding the elements with CSS, with the after-submittal hooks as backup for those that know how to find hidden elements.
There are a few membership type plugins that let you further restrict who does what. I’m unsure if any meet your specific need. Even if not, their source code could serve as guidance in how to prevent edit screen access. You’d just need to alter the criteria used.