### Godot version

v4.0.3.stable.official [5222a99f5]

### System information

Godot v4.0.3 - EndeavourOS #1 SMP PREEMPT_DYNAMIC Wed, 14 Jun 2023 20:10:31 +0000 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2070 SUPER (nvidia; 530.41.03) - Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz (8 Threads)

### Issue description

Game crashes with the following errors:

```
E 0:00:03:0788   compute_list_begin: Only one draw/compute list can be active at the same time.
  <C++ Error>    Condition "compute_list != nullptr" is true. Returning: INVALID_ID
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7716 @ compute_list_begin()
E 0:00:03:0788   compute_list_bind_compute_pipeline: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7729 @ compute_list_bind_compute_pipeline()
E 0:00:03:0788   compute_list_bind_uniform_set: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7793 @ compute_list_bind_uniform_set()
E 0:00:03:0788   compute_list_bind_uniform_set: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7793 @ compute_list_bind_uniform_set()
E 0:00:03:0788   compute_list_set_push_constant: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:7947 @ compute_list_set_push_constant()
E 0:00:03:0788   compute_list_dispatch_threads: Condition "p_list != ID_TYPE_COMPUTE_LIST" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:8027 @ compute_list_dispatch_threads()
E 0:00:03:0788   compute_list_end: Condition "!compute_list" is true.
  <C++ Source>   drivers/vulkan/rendering_device_vulkan.cpp:8175 @ compute_list_end()
```
The total number of errors is a multiple of 7 as the whole set repeats itself some random number of times.

I was able to reproduce the issue with Forward+, Mobile and Compatibility renderer. With Compatibility the game also crashes but without errors.
I was unable to reproduce the issue on machines with Intel iGPUs:
- Godot v4.0.3 - NixOS 22.11 (Raccoon) - Vulkan (Forward+) - integrated Intel(R) HD Graphics 620 (KBL GT2) () - Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (4 Threads)
- Godot v4.0.3 - macOS 11.7.7 - Vulkan (Forward+) - integrated Intel Iris Graphics - Intel(R) Core(TM) i5-4308U CPU @ 2.80GHz (4 Threads)

Maybe related to #70607.

### Steps to reproduce

I am creating a new instance of Node3D every frame with two GPUParticles3D children: **Emitting** and **NotEmitting**. Only the first one has `emitting` set to `true`.

When the number of Node3D instances reaches 500 or a bit more (can be 500, 503, 505, 514, etc.), the game either freezes or crashes with and sometimes without errors in the Errors tab.

I have also observed that the crashes/freezes **don't** occur in the reproduction project when any of the following is true:
- **NotEmitting**'s `visibility` is set to `false`
- **Emitting**'s `lifetime` is below 0.17. Above 0.19 it crashes. Around 0.18 it sometimes crashes and sometimes doesn't.
- **Emitting**'s `transform_align` is not set to "Z-Billboard" nor "Z-Billboard + Y to Velocity"

Also when **Emitting**'s `one_shot` is set to `false` the game only crashes/freezes and there are no errors in the Errors tab.

In my other project (which I extracted the minimal reproduction project from), the issue occurs regardless of **NotEmitting**'s `visibility` and **Emitting**'s `lifetime` values. The only workaround there seems to be setting **Emitting**'s `transform_align` to a value without "Z-Billboard" in it.


### Minimal reproduction project

[gpuparticles3d_crash.zip](https://github.com/godotengine/godot/files/11810916/gpuparticles3d_crash.zip)

for (int i = 0; i < staging_buffer_blocks.size(); i++) {
								staging_buffer_blocks.write[i].frame_used = 0;
								staging_buffer_blocks.write[i].fill_amount = 0;
							}
							
							staging_buffer_blocks.write[staging_buffer_current].frame_used = frames_drawn;
						}
					}
				} else {
					
					continue;
				}
			}
		} else if (staging_buffer_blocks[staging_buffer_current].frame_used <= frames_drawn - frame_count) {
			
			staging_buffer_blocks.write[staging_buffer_current].frame_used = frames_drawn;
			staging_buffer_blocks.write[staging_buffer_current].fill_amount = 0;
		} else {
			
			if ((uint64_t)staging_buffer_blocks.size() * staging_buffer_block_size < staging_buffer_max_size) {
				
				Error err = _insert_staging_block();
				if (err) {
					return err;
				}
				
				staging_buffer_blocks.write[staging_buffer_current].frame_used = frames_drawn;
			} else {