Oh, looks like I made an incorrect assumption here. I thought you were always getting the same random locations. But, looking at your code, that's not the case - you're just assigning the same position to all 3 new child nodes.
I assume you want the new nodes to be in the general vicinity of the just-destroyed node? In that case, you could just add some random vector to the destroyed node's position for each new child's position.
So, instead of this:
kid1.position = position
kid2.position = position
kid3.position = position
You could do something like this:
min_x = -5
min_y = -5
max_x = 5
max_y = 5
kid1.position = position + Vector2(rand_range(min_x, max_x), rand_range(min_y, max_y))
kid2.position = position + Vector2(rand_range(min_x, max_x), rand_range(min_y, max_y))
kid3.position = position + Vector2(rand_range(min_x, max_x), rand_range(min_y, max_y))
That'll set the position of each child node to some random position from the original position. Just adjust the min/max values as needed.