I disagree about your solution, we shouldn't have 2 types for player and entity, the server should really just have the client hook into the entity and watch all of it's events, and use that to send messages. Basically what the server has, and what you are suggesting we do to the client, is event propagation through inheritance, which is very ugly.

I could factor out the components of this and expose them generically (entity.setVisible, entity.setLagCompensate, etc), and that would work. It would be more code, and only ever really be useful if we have more stuff than players (which may take a while), but there is no real harm to doing it.