Added different derivative for heurisch: _eval_heurisch_diff

closes #7259, #4300
Yeah, that was also something I thought about. Then we would need the complete `diff` code path duplicated.
But if I understand the heurisch code correctly. It tries to work on the diff of the args anyway.