Here’s the idea:
When an elevator arrives, it’s not instantly clear if there are people inside it. If there aren’t, it’s acceptable to instantly rush the elevator. But if there are people inside, they’ll need to leave first. The solution: a light on the doors that indicate whether the arriving elevator is occupied or not. Or you could even have just a small window.
Bonus secondary solution: the doors themselves could indicate whether the elevator is going up or down.
PROS: Impatient elevator boarders would no longer crash into debarking passengers.
CONS: Naturally, none!