Make the creation happen in a function.
For example
On function "CreateSquare" => Do your creation code.
Add an event Square - On created
And add a condition : Square is overlapping Circle
=> Destroy Square
=> Function "CreateSquare" (so that it creates another instance)
Do the same for your Circle and this should make sure that instances are not overlapping.
To create them at different time, I'm afraid you may need to change your "every random" event to something more determined, and have the timings calling the creation of instances depend on the other.