You can also subclass auth.User, which allows you to maintain compatibility with 3rd party apps.
This is how I've gotten around the user name length limitation. I have a longer field in the subclass, and implement a backend to check that. But because it's a subclass, foreign-key relations still work.