It seems as though the Campaign History related list is trying to query for the custom lookup field on the Campaign object instead of the Campaign Member object.
I'm fairly certain this is a Salesforce bug and not related to any custom code, as the Campaign History related list is maintained by Salesforce and I have reproduced this in a pretty empty dev org. I've opened Case #15890319 and am waiting to hear back from Salesforce on this. (Update: It's fixed!)
I will update this answer to the Known Issue if/when it gets created. I just wanted to post this here in case anybody comes across this issue in the meantime.
Update: I've been told this bug is related to this known issue, though it seems slightly different since the bug only affects custom lookup fields.
Update #2: This is slated to be fixed for the Summer '17 Release, per a comment on the Lightning Now! Success Community.
Update #3: While the known issue linked above is not yet fixed, lookups on the Campaign History related list now seem to no longer break the related list in the Lightning Experience!
Workarounds
There are a few different options that could be done while this is being resolved.
Create a custom formula field that links to the record. Note that this will force anybody to go to lightning, even if they're in classic mode (& if lightning isn't enabled for them, I suppose it would result in some sort of error? I have not tested thoroughly.) IF(!ISBLANK(Custom_Lookup__c),HYPERLINK('/one/one.app?#/sObject/'+ Custom_Lookup__c + '/view',Custom_Lookup__r.Name),'')
Formula fields that span relationships seem to still work. So if you wanted to just display the name of the field, you could create a formula to Custom_Lookup__r.Name and just display that instead, or other fields on the object.