Caster:PlaySpellVisual(Target:GetGUID(), spell) -- Do not neccessarily need to get GUID, e.g:
pUnit:PlaySpellVisual(UnitB, spell) -- Or might need to get it lots
pPlayer:GetGUID():PlaySpellVisual(pUnit, spell)
In your case:
pUnit:PlaySpellVisual(player:GetGUID(), spell)
Also GetGUID() has no parameters, why does everyone assume these functions do?!