to your first question, if there are multiple tanks in one group, don't give doMove to all of them, just the leader. If each group has 1 tank and you are talking about many tanks from different groups crashing on each other, don't use doMove at all. create a waypoint for each group, give it a radius of let's say 100m and then use the setWpPos command. also put something in the condition field so that it never activates or place a cycle waypoint after the first.
to your second question, I'm guessing you are using the alive command, which is a mistake for tanks. getDammage could be useful, but canMove and canFire would be more helpful. make every tank execute a script like this:
here's an example of the script
[tank1,"tank'sMarker1"] exec "checkIfMyTankIsWrecked.sqs"
what this should do is wait until the tank can't move or can't fire, then have the tank's marker changed and the crew use the radio to tell you, if of course anyone survived.
_tank = _this select 0
_marker = _this select 1
_crew = units (crew tank)
@(not ((canMove _tank)) or not ((canFire _tank)))
(_crew select 0) sideChat "My tank is busted!"
_marker setMarkerType "Marker" (or _marker setMarkerType "Empty")
didn't really have time to download and check your script, but I hope this is helpful...