It's not unusual to substitute user model as it is stated in the docs: https://docs.djangoproject.com/es/1.9/topics/auth/customizing/#substituting-a-custom-user-model, so, having this into account, it is better to get the user model class with the following code:
from django.contrib.auth import get_user_model
UserModel = get_user_model()
Afterwards, you can use this UserModel to add functionality as @Lakshman Prasad suggests: UserModel.add_to_class('get_related_foo_models', get_related_foo_models). 
In order to get the code executed only once I prefer to use Django application config classes (https://docs.djangoproject.com/es/1.9/ref/applications/), so a full working example will be:
# myapp/__init__.py
default_app_config = 'myapp.apps.MyAppConfig'
# myapp/apps.py
from django.apps import AppConfig
from django.contrib.auth import get_user_model
class MyAppConfig(AppConfig):
    name = 'myapp'
    verbose_name = 'MyApp'
    def ready(self):
        # Add some functions to user model:
        def custom_function(self):
            # Do whatsoever
            pass
        UserModel = get_user_model()
        UserModel.add_to_class('custom_function', custom_function)