I'd say "gameplay" penalties should offset, like your PI vs. holding example. Replay the down. Same goes for personal fouls against both teams.
If multiple penalties are called on the same team, enforce whichever one results in the greatest penalty yardage.
Now, in the case of a "gameplay" penalty, like the illegal contact the OP stated, being called on one team and a personal foul of any kind called on the other, I say the personal foul should be enforced and wipe out the run of the mill penalty against the other team.