This would be best replaced with a SecondaryAuthenticationProvider. The fields could be displayed on the initial login form (by returning the AuthenticationRequest defining your custom fields from getAuthenticationRequests()) or on a secondary page during the account creation process (by returning it with a UI response from your beginSecondaryAccountCreation()).
Either way, there's no need for a custom special page that tries to replace the normal account creation page anymore.