Am I correct in understanding your issue arises from manually rolled instances of Generic, not from Generic itself?
Wouldn't then perhaps the better fix be to resurrect the old rule for derived Typeable instances and apply it to Generic and Generic1 instead?
The new rule would be that if you hand-implemented Generic or Generic1 in your module it isn't Safe.
That would make it so that derived Generic, Generic1 would be considered Safe, and you wouldn't break literally every user of the library who care about Safe Haskell.
As it stands the things are damn-near impossible to get right instantiating them by hand anyways, so I expect this would affect only 1 or 2 users rather than all of them!