I honestly believe the best thing you can do to keep your players ‘in’ the game is to only use character names at the table. If I need to refer to a player out of character, I simply use non verbal communication combined with ‘you’.
This does a few magical things:
1. The players appreciate their characters more. They start acting as their characters would act, not as they would act.
2. They care more about the rest of the game. It’s no longer just a few friends sitting around a table rolling dice, it’s an actual world that they’re now sucked into.
3. The don’t take things that happen to their characters personally. If they’re John, and their character is John, and they’re pretty much exactly the same, and something bad happens to the character John, real John is going to take it personally. It makes for super awkward table happenings. If I as the DM say that John’s overpowered sword got stolen, he feels like I’m punishing him. If I tell John that his character, Romanor Telathiel’s overpowered sword got stolen, now he’s not pissed at me, he just wants to start rolling some gather information and tracking checks to figure out how to get it back.
In conclusion: Character names. Yes.