Using a non-virtual derived struct for polymorphism is error prone, especially combined with the requirements of DNA. Instead, use a separately allocated runtime struct as done for many other DNA structs. In a followup commit, the remaining runtime members of `PreviewImage` could be moved to the new runtime struct. Pull Request: https://projects.blender.org/blender/blender/pulls/121509