save_post hook to add terms getting deleted when using bulk edit

Not sure it is the specific issue that causes it, but what you are doing wrong is to assume the existence of global variable, in this case $_POST['post_title']. Not everything that updates posts will have it set.

The right way to do what you are trying to do is to hook your hook on higher priority and get the relevant information from the wordpress DB itself by either using the second variable passed to the hook, or by doing a $post = get_post($post_id) and replace $_POST['post_title'] with $post->post_title