The problem here was that free_data_after_sync frees the particle cache
in headless or locked-UI mode, but the second view doesn't regenerate them.
For multi-view renders, there's no point in dropping the cache if we'll
render another view anyways, so just keep it until the last view.
Since free_data_after_sync doesn't do anything for baking or viewport
renders anyways, it's easiest to just move this out into BlenderSession::render
since that already checks whether another view is still outstanding.