You have to use on-location tests. Do your best to be fair and get a true evaluation of the candidate's skills. It's not perfect but the alternatives are worse.
The other thing you have to do is that you have to be willing to fire the people who are underperforming. It's just a natural consequence of the interview process being imperfect.
I think leetcode tends to be a randomized signal because if you've seen the problem before then it's easy, but if it's an unfamiliar problem (or class of problem) then you're basically being asked to be Knuth/Dijkstra/et al., but faster. Algorithm puzzles are fun, but they bear little resemblance to typical tech work.
I think doing very basic, simple things is a better test. I also like asking candidates to explain something that they already understand well. And for code, I like reading it and also getting an explanation about why things were done the way they were. Code reading also seems to be an important skill that is probably more important than writing.
Yeah, even just making people engage with source code from your system and answer questions about it or find bugs is better than asking them about their own portfolio.
The other thing you have to do is that you have to be willing to fire the people who are underperforming. It's just a natural consequence of the interview process being imperfect.