A classic way to bridge the gap is to put a great academic brand on your CV. For example, you could work as a research assistant in CS for a famous university (e.g. Cambridge, Imperial, ETH).

Since the salaries they offer are low, the competition won't be so intense, and they will offer support to relocate. Once you have a foot in the ground, you can apply to great industry jobs.

A more elaborate plan would be to obtain a PhD at one of those institutions, but that is quite time-consuming and the benefits might not offset the costs.

That sounds like a solid advice!! Thanks for pointing it out!! What if they reject me there too? What is the plan B in this situation?

Well, you have many options. Given that you seem to have a good publication record, I'd expect a couple of offers after making 5 or 10 applications.

If you are a good programmer, avoiding areas that are too hot (e.g. ML) and focusing on things that can make best use of your skills (e.g. compilers, verification) could be a good idea.

Research assistant positions are also great a backdoor to PhD offers, in case you are interested in that.