I used to hate the "luck" aspect but then I realized that the only reason they are doing PKs is because the match ended in a draw. Neither team did enough to advance. You can't do tiebreakers, because obviously there are none: goal difference? same, goals scored? same, head to head? same, etc. You gave them 33% more time than they would normally have to determine a winner and they still didn't. At this point, neither deserves to advance more than the other, so you do something "luck" based to decide who does. You could flip a coin, or you could do something that is at least soccer-related and have a PK shootout.
Other options just don't make sense:
-Free kicks or corner kicks have such a low scoring percentage that it wouldn't be an efficient way to determine a winner
-Using other stats from the game itself as tiebreakers would alter how the game is played (if you say, fine no team can be separated by goal difference or goals scored then whoever has the most corners... but then teams will actively try to get corner kicks during the game, and that actually changes how the game is played, so that's no good - just imagine in the last 5 minutes of a game, teams trying to kick the ball off defenders for corner kicks rather than trying to score goals because it's way easier to get 3-4 corner kicks to win a tiebreaker than it is to get the 1 goal needed to win. If you count shots, teams will just shoot low percentage shots from distance to rack up that number which simultaneously decreases their chance of actually scoring... basically, non-goal tiebreakers would suck even more).
-Continue playing is too straining on the players
= PKs are the best option, even if it "sucks" - but it's fair because the team who "wins" didn't do enough to advance anyways, so they ARE lucky to advance at all