Allocate copy-on-write snapshot buffers locally
The copy-on-write path is uncommon, so a thread-local buffer only keeps memory alive per worker. Also tighten the snapshot callback docs from review.
Co-authored-by: Luke Sandberg <210140+lukesandberg@users.noreply.github.com>
Co-authored-by: Tobias Koppers <1365881+sokra@users.noreply.github.com>