It seems to me, a given Card never changes state, but a Player does have state changes. So, I'd me more inclined to read values from the immutable object (card) and apply them to the mutable object (player's state) according to a set of interpretation rules (a third object to consider, separating out the game rules from the tokens being used).
Correct, a Card doesn't change state because it doesn't have any. Card's methods could be static.
If the OP is creating a Magic The Gathering style of game then I would recommend that the Player class should be immutable as well. Treat it as a Map of data.
It is necessary to keep an instance of the base-Player i.e. without any "spell effects applied". Then calculate resulting values by applying all the affecting Cards. The main benefit is that it's easy to re-calculate what the Player should be when spell effects wear off. Just re-apply all the Cards still in effect to the base-Player.
The only thing that would mutate is the collection of Player variables that are participating in the Game (rather than the contents of the Player class itself).