Really what you are proposing is an extension of the scope #19353, and I do feel that if the built in forms are to be made more usable with custom users, then both the hardcoding of auth.User and the username field should be addressed together.
One thing not addressed in your authtools approach that is done in the current RegexField of the builtin form is handling regex validation of valid usernames - if your custom user requires some other sort of validation, you have to hook up some sort of custom validator like you've done, which seems like more work than just creating a custom form where you can define the fields as you need them. Also you may not need or want all REQUIRED_FIELDS in your form - this is a somewhat unfortunate label for this property - as it is really more specific to the management command prompts (ie, you can specify a field as required in the model, but not include it in that list, or vs versa).
A good step here might be a little DDD, write the docs to cover the cases where you may need to work around this proposed flexible approach - if it seems like it gets too complicated to explain, perhaps just leaving it documented as requiring the author to create new forms (which is more work, but maybe more straightforward) - may still be the best choice.
If this can be done in a way that maximizes win, I'm all for it, but if it is trading less work in some cases, for more in others, I'm less sure.
-Preston