`preview_id_copy_free` was trying to do its own version of `BKE_libblock_free_data`, instead of calling directly that function. This could easily lead to missing cleanup when modifiying ID management, and since these IDs are managed by general ID API, there is no reason not to do the same on destruction. This is extracted from !146046 'making ID::runtime an allocated struct'.