Как выше сказали, форму можно и в рантайме создавать (что так и делается, только код отдельно находится для этого).
1. Можно использовать кодогенерацию, а не рефлексию, при этом вам в любом случае, ваши датаклассы надо будет атрибутами обвешивать, чтобы знать как создавать поля ввода.
2. Для WinForms готовых бесплатных решений нет. Для WPF
https://github.com/GenericCodes/WPFCrudControl не полностью, но решает вашу проблему.
3. Среди платных решений (DevExpress, Teleric) есть инструменты для автогенерации форм, с шаблонами и прочим, но не в рантайме.