So you want something like this, I think (animations, etc not included) :
[Statedef 900, Spawn helper A]
[State]
Type=Varset
Trgger1=1
var(0)=899
[State]
Type=Changestate
Trigger1=1
value=901
[Statedef 901, Spawn helper A, second part]
[State]
Type=Varadd
Trgger1=1
var(0)=1
[State]
Type=Changestate
Trigger1=Numhelper(var(0))>0
value=901
[State 901]
Type=Helper
Trigger1=1
name="Helper A"
Stateno=910
ID=var(0)
...
[State 901]
Type=Changestate
Trigger1=1
value=... ; wherever you want to return after spawning the helper
[Statedef 905, Spawn helper B]
[State 905]
Type=Changestate
Trigger1=Numhelper(900)+Numhelper(901)+Numhelper(902)+Numhelper(903)+Numhelper(904)=0
value=900 ; Spawn helper A instead if there aren't any.
[State 901]
Type=Helper
Trigger1=1
name="Helper B"
Stateno=920
ID=920
...
[Statedef 910] ; Helper A state
[State 910]
Type=Changestate
Trigger1=abs(P2dist X)<30 ; P2distance
Trigger1=abs(P2dist Y)<30
Trigger2=!Ishelper(900)
Trigger2=abs(Rootdist X-Helper(900),Rootdist X)<30 ; Other helper A distances
Trigger2=abs(Rootdist Y-Helper(900),Rootdist Y)<30
Trigger3=!Ishelper(901)
Trigger3=abs(Rootdist X-Helper(901),Rootdist X)<30
Trigger3=abs(Rootdist Y-Helper(901),Rootdist Y)<30
Trigger4=!Ishelper(902)
Trigger4=abs(Rootdist X-Helper(902),Rootdist X)<30
Trigger4=abs(Rootdist Y-Helper(902),Rootdist Y)<30
Trigger5=!Ishelper(903)
Trigger5=abs(Rootdist X-Helper(903),Rootdist X)<30
Trigger5=abs(Rootdist Y-Helper(903),Rootdist Y)<30
Trigger6=!Ishelper(904)
Trigger6=abs(Rootdist X-Helper(904),Rootdist X)<30
Trigger6=abs(Rootdist Y-Helper(904),Rootdist Y)<30
Trigger7=abs(Rootdist X-Helper(920),Rootdist X)<30 ; Helper B distance
Trigger7=abs(Rootdist Y-Helper(920),Rootdist Y)<30
value=930; state C
[Statedef 920, Helper B state]
[State]
Type=Varset
Trgger1=1
var(0)=899
[State]
Type=Changestate
Trigger1=1
value=921
[Statedef 921, Helper B state part 2]
[State]
Type=Varadd
Trgger1=1
var(0)=1
[State x]
Type=Destroyself
Trigger1=var(0)>=905 ; There are no A type helpers to follow so B is destroyed
[State]
Type=Changestate
Trigger1=Numhelper(var(0))=0
value=921
[State]
Type=Changestate
Trigger1=1
value=922
[Statedef 922, Helper B following first helper A]
[State 921]
Type=Velset
Trigger1=1
X=0.05*(Helper(var(0)),Rootdist X-Rootdist X)
Y=0.05*(Helper(var(0)),Rootdist Y-Rootdist Y)