SayOnHitMagicEffectScript doesn't have anything to do with dispelling the existing magelight. Its just a script that makes NPCs react when you hit them with the light. The heal spells all have that script as well.
They keyword has nothing to do with it either. That keyword is also one used to make NPCs comment about spells, used by the WIMagicCommentColorful quest. Its attached to spells like heal spells, conjured weapons, ect.
I'd leave both of those alone.
You were on the right track when you mentioned impact. What you need to look at is the ImpactData for the effect. You'll see that impact with most surfaces (as listed in the effects ImpactDataSet) uses the "MagLightSpellImpact" impact. That impact in turn spawns a hazard, which is the floating light at the point of impact.
I believe what you need to alter is a value for the Hazard "TestLightHazard" (its in SpecialEffect > Hazard). If you look at said entry you'll see a field for Limit. Set that to whatever number you want the limit to be. By default its 1, which is why it removes the light when another spawns, because only 1 can exist at any given time and the existing one is removed when a new one is spawned.
That won't do anything for the duration, though. There might be some way to do a different duration if you were to add a second Magelight effect to the spell with 30 seconds duration instead of 60, then give conditional statements to both effects, with the conditional for the first effect returning a negative if a hazard is detected in existance in the world, but the second effect returning positive if a hazard of that type already exists (so in essence the first effect that lasts 60 seconds would happen if no hazard exists AKA on first cast, but the first effect would fail if a hazard already exists, so the second effect with half duration would succeed and apply a light in that situation).
But... thats beyond my knowledge. I took a quick look at the conditionals and couldn't find anything that might work to search for an existing hazard. Might require an actual script to detect a value given to the hazard or something, but scripting is WAY beyond me, that stuff goes way over my head.
Also, I don't know if changing the hazard limit will at all effect Magelight casted at an actual actor (if you didn't know already, casting Magelight at an NPC will basically give them a Candlelight effect on themselves, but thats also limited to only 1 actor at a time, if you cast it on a second character the first disappears). I can't figure out how the spell casted on an actor works, whether it spawns a hazard which floats around the actor (in which case the change above would effect that as well) or whether its some kind of actual magic effect which is somehow limited to 1 at a time.