Well my suggestion will be a bit different, what about not using any of the waituntils? Are they needed?
Imho, this type of procedure should be avoided.
So, my suggestion would be, remove that extra scripting thread with the waitUntils and modify your scripts to do this by themselves.
Example (Not tested):
TAG_fnc_scriptDone = compile preprocessFileLineNumbers "fn_scriptDone.sqf";
//Each of your scripts
//Function to flag increments
_wanted = 3; //How many scripts to wait for?
if (isnil "TAG_doneScripts") then
TAG_doneScripts = 1;
TAG_doneScripts = TAG_doneScripts + 1;
if (TAG_doneScripts == _wanted) then
//All wanted scripts are done
//Do something when that happens
Note this is just a very simple/odd example showing one (of many) way to not having to create another parallel thread.
//End of script, lets flag this event
 call TAG_fnc_scriptDone;