Только так, но бизнес логика в программе должна быть очень точна и стабильная. А то простые люди начнут 'преподавать'. А насчёт полей, что у разных типов то заполняются, а то нет - это в Gui и в классовой модели решается и не есть плохо .
Потому что этот упрощает и ввод адресов и ещё кучи других вещей, которые те и другие иметь или быть могут.
Ещё один плюс такого решения, что те, кто сегодня преподаванием занимается, завтра только пользователь может быть. Или наоборот. Потом такие вещи как
Логин
Организация курсов
Организация заместителя преподавателя
Рассылка уведомлений итд.
упрощаются до минимума