unable to stop loop when using wp_insert_post with publish_post hook

The wp_insert_post() function triggers the publish_post hook again leading to an infinite loop. Try this change:

remove_action('publish_post', 'copy_post_to_blog');
wp_insert_post($post);
add_action('publish_post', 'copy_post_to_blog');