Since I don't exactly know how are you creating the new user, my guess is you are doing something like,
user = CustomUser.objects.create(username="boohoo", email="boo@hoo.com", password="boohoopass")
This user object will store the password as plain text. Django doesn't automatically converts the text to hashed value instead if you dig deeper you'll find a method called make_password or there's a method in AbstractUser, set_password which basically converts the string to hash value. So when you create a user, use either of these methods.
user = CustomUser.objects.create(username="boohoo", email="boo@hoo.com")
user.passowrd = make_password("boohoopass")
# or
user.set_password("boohoopass")
Even better approach is to use the method in the UserManager, create_user, which automatically does this for you.
user = CustomUser.objects.create_user(username="boohoo", email="boo@hoo.com", password="boohoopass")
UPDATED
In your case your admin class must also inherit from UserAdmin from django. Because User admin also calls the specific functions to make such things like password hash keys.
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as OrigUserAdmin
@admin.register(CustomUser)
class CustomUserAdmin(OrigUserAdmin):
list_display = (
'id', 'first_name', 'last_name', 'username', 'email', 'is_active'
)