Core/Vehicle: Make the passenger join event asynchronous

Prevents a crash in the following scenario:
Player 1 enters vehicle X
Seat on vehicle X is taken by Player 2
Player 2 is removed from vehicle X
Vehicle X dismisses (but player 1 did not even finish AddPasssenger
call)

Fixes #4271