Use GitHub-hosted runners when self-hosted are not available

I have a GitHub workflow in a public open-source repository. Due to performance reasons, we use self-hosted runners. But those self-hosted runners are not available for forks! And workflow can run slower on usual common runners.
How can I set up jobs to run on self-hosted when available and github-hosted as fallback default?

This offers a dynamic runs-on example: