It is now 2021-04-25, and Google has still not fixed this defect.
This answer is not an answer to the question, but a description of some workarounds:
Use headings and not bookmarks workaround
Instead of using bookmarks, create a "heading". Then you can freely copy (or cut) and then paste (i.e., move) the entire heading to a new location inside the same Google doc. Existing links to headings seem to be be resilient to moving whole sections around an existing document (e.g., are not invalidated like bookmarks are currently).
This doesn't work for moving an entire heading between two different Google docs. So see the UUID workaround below.
Insert UUID's into the Google doc.
This has the obvious downside that there isn't a "link" that points directly to it. And you have to use CTRL+f to search again once you have found it. However, the UUID is just plain text and as such is relocatable, and you can search the drive for the UUID. e.g., https://drive.google.com/drive/search?q=c9ac97ea-1f83-4d47-aab3-240f6d87d5b0
Note that the above search will not work right away. It seems that the indexing that Google Drive does has a bit of latency. I found that one or two minutes elapsed before the above URL would work.
Generating the UUIDs are easy with a Chrome Extension. The one I use as of 2021-04-25 07:49:10 here: https://chrome.google.com/webstore/detail/uuid-generator/nflgkajcbjiooanofomjjaagkaednbel I'm advocating this one because it minimizes the amount of keyboard and mouse actions you have to do in order to get a UUID copied in to a clipboard:
A plea for consumer activism
I encourage all docs users who see this answer to post a link to this question in the text field for feedback. Use Help/Help Docs improve from any Google Doc: