Hi sixfootjames, was encountering a similar problem and came across your posts. Here a link that helped me around my problem: https://codex.www.ads-software.com/Class_Reference/WP_Query#Custom_Field_Parameters.
My take is the staff members should be posts, different departments should be different categories, Directory should remain a page, and custom fields for telephone, email, fax, a class room number are fine. So when you open your Directory listings page it lists only the staff in a particular department and using meta_query you can filter using your Custom Fields.
Hope I was of some help ??