Ok so finally figured it out. Turns out the django-registration app templates were conflicting with the admin registration templates. To fix this, I changed the folder name where my custom django-registration templates are from "registration" to "myreg" (since the admin registration templates are also under a folder called "registration", which is what I believe was confusing django). Then in the auth_urls.py file of the django-registration app, I changed the template name from "registration/..." to "myreg/..." and added the template name argument to all patterns that don't have it. So auth_urls.py would be like this:
urlpatterns = patterns('',
url(r'^login/$',
auth_views.login,
{'template_name': 'myreg/login.html'},
name='auth_login'),
url(r'^logout/$',
auth_views.logout,
{'template_name': 'myreg/logout.html'},
name='auth_logout'),
url(r'^password/change/$',
auth_views.password_change,
{'template_name': 'myreg/password_change_form.html'},
name='auth_password_change'),
url(r'^password/change/done/$',
auth_views.password_change_done,
{'template_name': 'myreg/password_change_done.html'},
name='auth_password_change_done'),
url(r'^password/reset/$',
auth_views.password_reset,
{'template_name': 'myreg/password_reset_form.html'},
name='auth_password_reset'),
url(r'^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
auth_views.password_reset_confirm,
{'template_name': 'myreg/password_reset_confirm.html'},
name='auth_password_reset_confirm'),
url(r'^password/reset/complete/$',
auth_views.password_reset_complete,
{'template_name': 'myreg/password_reset_complete.html'},
name='auth_password_reset_complete'),
url(r'^password/reset/done/$',
auth_views.password_reset_done,
{'template_name': 'myreg/password_reset_done.html'},
name='auth_password_reset_done'),
)
This should solve the issue and allow Django to use separate templates for admin and django-registration.