To keep a distance, you'd need at least an angle. If you have nothing, you have to play it safe. One way to do the safe way is this:
+ [creation trigger]
++ For each baddie
+++ baddie.x < global('lowX')
---> set global 'lowX' to baddie.x
+++ baddie.x > global('hiX')
---> set global 'hiX' to baddie.x
+++ baddie.y < global('lowY')
---> set global 'lowY' to baddie.y
+++ baddie.y > global('hiY')
---> set global 'hiY' to baddie.y
++ [empty]
--> Create baddie at
(lowX + (hiX - lowX) / 2) + cos([your angle of choice]) * (distance(lowX, lowY, hiX, hiY) / 2 + [your distance of choice])
(lowY + (hiY - lowY) / 2) + sin([your angle of choice]) * (distance(lowX, lowY, hiX, hiY) / 2 + [your distance of choice])
Here's a picture describing the code above:
<img src="http://dl.dropbox.com/u/11182740/pictures/get_distance.png" border="0" />
By calculating the lowest and highest values for X and Y of the sprites (the blck dots) you get two new coordinates (the crosses) that are the outer bounds enclosing all sprites. If you now half the distance between them you have the radius of a circle with a center point between the two coords (red line = radius, red dot = center point, orange line = distance between coords). With the center point, the radius, any angle and your desired minimum distance you can now set a new spawn point.