Currently all Async jobs (campaign launches, event imports, etc...) are all run in sequence, one after the other. In case of large campaign launches, any other job will not start until campaign has finished processing.
Ideally we would want to split this process into one or multiple and group processing by type of job to avoid unnecessary delays.