I wonder if this actually works as intended - you now have two models with same app-label and name in app cache. IIRC contenttypes for example are keyed by app-label and name, so other parts of Django aren't necessary ready for this change.

It might be better to enforce app_label, name key for models, that is it is illegal to have a proxy model with same name as the original model.