Optimize onAsyncPlayerChat to reuse randomizer