Regarding the question about overriding the RegistrationUserCreation, yes you can.
Create the class that overrides FormActionFactory, and put the class name in your jar (or ear, or however you’re deploying) in META-INF/services/org.keycloak.authentication.FormActionFactory. That class should return a FormAction implementation when public FormAction create(KeycloakSession session) gets called.
Once you deploy, you will be able to copy the “Registration” Flow in “Authentication”->“Flows”, and then add your execution to the registration forms. Then, make sure to bind your new flow in “Authentication”->“Bindings”.