I hope the game cache solves the problem. Well, you know how to make the event and condition for the spell (hopefully) so I'll get past this now. Now, the first action is "Game cache - Create Game Cache". You create the Game cache for your own map. THEN, you make Game Cache variable and give it whatever name you want. The following action is to set variable. Get your variable and make it be equal with (Last Created Game Cache). Then you do the "Game Cache - Store Unit" and store the casting unit, with whatever Label and Cattegory you want, in your game cache (give the variable). Ok, I believe that the cattegory could be done by converting an integer to string, and give the integer the value of triggering player. This will assure that more than one player can cast the spell at a time. Make sure to give a good Label and obviously remember both the label and the Cattegory.
Now you will need to add a nice variable which will be the position of (Casting Unit). Make the variable an array and give to the array number the Player Number of the (Triggering Player).
After you have done the freezing part and killed all the units around the caster you can play the caster's Death Animation, wait how much it lasts (EXACT timing) and remove the unit. After the time of reviving seconds you can just "Game Cache - Restore Unit", giving the exact label and cattegory you gave above. You will have the unit return at the Region variable you made, giving the same array number you gave above. Add animations if you like... That should do it.