I'd probably use those three variables:
Previous and next tile are pretty self explainatory. If player wants to move, nextTile is set to his target coordinates (eg. [2, 1]). Player is in "moving" state if previous and nextTile are different. The "transition" field is used to tell where the player is ...
If the visual position is needed by one set of systems and the logical position by another set of systems, then it might be a good idea to have a separate component for each.
Have the Animation system and the Rendering system read the VisualPosition components.
Have the game-mechanical systems read the LogicalPosition components.
Have the Movement System ...