Fixes https://github.com/flutter/flutter/issues/134751, and @jonahwilliams suspects it could be related to a number of other flaky/texture leak scenarios (https://github.com/flutter/flutter/issues/133506#issuecomment-1720275749) that only happen sometimes (i.e. on CI but not real devices), i.e. stuff like:
```txt
--- Vulkan Debug Report  ----------------------------------------
| Â Â Â Â Â Â Â Â Severity: Error
| Â Â Â Â Â Â Â Â Â Â Type: { Validation }
| Â Â Â Â Â Â Â Â ID Name: VUID-vkDestroyBuffer-buffer-00922
| Â Â Â Â Â Â Â ID Number: -464217071
| Â Â Â Queue Breadcrumbs: [NONE]
| Â CMD Buffer Breadcrumbs: [NONE]
| Â Â Â Â Related Objects: Device [94498356231456] [ImpellerDevice]
| Â Â Â Â Â Â Â Â Trigger: Validation Error: [ VUID-vkDestroyBuffer-buffer-00922 ] Object 0: handle = 0x55f21cf47d20, name = ImpellerDevice, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xe4549c11 | Cannot call vkDestroyBuffer on VkBuffer 0xbb00000000bb[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to buffer, either directly or via a VkBufferView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-vkDestroyBuffer-buffer-00922)
-----------------------------------------------------------------
```
---
~~This PR will look a bit like a mess until the last 2 PRs merge in, but locally it appears to fix fence races/segfaults that I was seeing on CI, including on Linux with validations enabled. We can test it further tomorrow.~~ EDIT: Updated.