### Description

Currently every index delete task is processed individually. Additionally, they are marked at the `urgent` level. This leads to scenarios where a number of index delete tasks that are queued up very quickly can lead to starvation. We have seen these tasks delaying the processing of `node-join` tasks disrupting cluster state processing.
server/src/test/java/org/elasticsearch/cluster/metadata/MetadataDeleteIndexServiceTests.java
);
        ClusterState state = ClusterState.builder(clusterState(index)).putCustom(SnapshotsInProgress.TYPE, snaps).build();
        Exception e = expectThrows(
            SnapshotInProgressException.class,
            () -> service.deleteIndices(state, Set.of(state.metadata().getIndices().get(index).getIndex()))
        );
        assertEquals(
            "Cannot delete indices that are being snapshotted: [["
                + index
                + "]]. Try again after snapshot finishes "
                + "or cancel the currently running snapshot.",
            e.getMessage()
        );
    }
    public void testDeleteUnassigned() {
        
        String index = randomAlphaOfLength(5);
        ClusterState before = clusterState(index);
        
        when(allocationService.reroute(any(ClusterState.class), any(String.class))).then(i -> i.getArguments()[0]);
        
        ClusterState after = service.deleteIndices(before, Set.of(before.metadata().getIndices().get(index).getIndex()));
        
        assertNull(after.metadata().getIndices().get(index));
        assertNull(after.routingTable().index(index));
        assertNull(after.blocks().indices().get(index));
        
        verify(allocationService).reroute(any(ClusterState.class), any(String.class));
    }
    public void testDeleteIndexWithAnAlias() {