Maybe through a combination of a Runner specific configuration limit of concurrency 1, combined with job tags which are then executed on this runner. Idea from Is it possible to limit maximum concurrency for a certain job type / build step per runner? - #2 by grove
Resource groups could also work, though they would need to be applied to jobs individually. Resource group | GitLab
If that does not work, setting restrictive instance limits could be a workaround.