Этот подход не может работать. У вас есть два разных экземпляра VCL в вашем приложении, один из exe и один из DLL. Это один VCL слишком много.
Вы можете легко понять это, подумав, что это за объекты. Объекты - это и данные, и код. Когда вы передаете объект из exe в DLL, вы передаете данные, но не код. Объекты Delphi не являются жизнеспособными типами межязыковых взаимодействий. Когда вы передаете свой экземпляр TA5 приложения D5 в свою библиотеку XE, код XE интерпретирует его так, как если бы это было приложение XE TApplication. Но это не так. Та же проблема относится к вашему MDI родителю и детям. Первая - это форма D5, вторая - форма XE, поэтому их взаимодействие не может быть успешным.
Пакеты решают эту проблему путем совместного использования одного экземпляра VCL, но, разумеется, из этого следует, что все пакеты создаются с использованием одной и той же версии Delphi. Если вы хотите использовать VCL, это жесткое ограничение.
Итак, если вы хотите, чтобы некоторые из ваших форм создавались с помощью XE, вам нужно портировать все приложение.