Sprites and Tiles

Hi everybody!
Many tutorials say that we must not bind textures too often, that’s why we have all these spritesheets and tilesets.
Suppose I have a tileset with water, grass, trees, houses etc. And spritesheet with players.
I have a question about rendering.
Firstly I draw water layer, then ground, and then objects(trees, rocks houses). I’m very new to this, I suppose players must be on the same layer with objects to interact with them, am I right?
Look at the situation

We have many trees, rocks and players on different positions, so while rendering we have to rebind textures(tileset and spritesheet with characters) every time depending on what I’m rendering now(tree or player), because like on the picture while player on this position tree must be behind him and rock in front of him. Is there any good practices to do this task optimally?