I can't believe that over a year after asking this you solved the issue. I had to change the object='1' to object='2' as 2 is contact, not sure why this works without the columns from related entities but not with the columns from related entities. I also had to add multiobjectidfield='1' to the grid tab. In the end the layout xml looked like this:
var layoutXML = "<grid name='resultset' object='2' multiobjectidfield='1' jump='name' select='1' icon='1' preview='1'>" +
"<row name='result' id='contactid'>" +
"<cell name='fullname' width='300' />" +
"<cell name='telephone1' width='300' />" +
"<cell name='gcu_highestdegree' width='300' />" +
"<cell name='emailaddress1' width='300' />" +
"<cell name='employeetype.gcu_employeetypedescription' width='300' disableSorting = '1' />" +
"<cell name='orgStructureDepartment.gcu_description' width='300' disableSorting = '1' />" +
"</row>" +
"</grid>";
Since I've gone so long without this I don't think it matters to me anymore but good to know for the future. Hopefully anyone else who finds this gets an answer as well. Thanks.