About first patch: not good ask GetCaster() for all handler code, this slow operation (search guids lists for pointer) so must be used in specific spell code part only if need. Aura target can't be NULL in any cases. I can store corrupted pointer if some bug but not NULL.
Cooldown reset look hackish. We have special fucntion for reset specific spell category: Player::RemoveSpellCategoryCooldown
I will replace this part code by direct unconditional call this function.
for original spell caster selection better use:
Unit* caster = GetAffectiveCaster();
For triggered spells it point to original main spell that triggering chain of casts
This 2 patches added in [11024]. Thank you.
Damage redunction is unacceptable hack. Becase for this exist special spell 68066