There might be something else happening here... in my test cases, I manually move the subshapes by clicking and dragging with the mouse. When released, the object that is too close to the newly dragged shape pops away. (As a sanity check you might want to verify that you get this behavior.) However, sounds like you are moving the objects by formula, I haven't tried that. Per chance, do you have the formulas "guarded"? If so, that might be the problem.
A solution might be to add some conditional statements that check, as you suggested, to see if the shapes overlap. This still might be done in the shapesheet, setting up the restrictions in either the User-Defined Cells or Scratch sections.
HTH
Wapperdude