i guess i have to accept there's no way to delete the dead bodies.
Don't give up so easily. This next version worked (I actually tested it with 1.46).
Get rid of the soldiers=[] from your init.sqs. We don't need it now.
Place a game logic and name it "server"
Place a very large trigger (5000X5000) or large enough to cover the area you are playing. Make it :
activation: anybody, repeatedly
name: deletetrigger
condition:this
Execute this script at the beginning of your mission (via init.sqs)
[] exec "deletebodies.sqs:
;deletebodies.sqs
?!local server:exit
#loop
_temp=+(list deletetrigger)
~10
_s=+(list deletetrigger)
?count _s == count _temp:goto "loop"
_i=0
#l1
_u=_temp select _i
?!alive _u:deletevehicle _u
_i=_i+1
?_i<count _temp:goto "l1"
goto "loop"
This worked for soldiers created by "createunit" but didn't delete players when killed.