Have you thought of using a boolean variable and a timer?
You can create an instance variable for the player of boolean type (something like "isInvincible") and local static variable "timer" (the static part is important! It won't work otherwise).
To the initial collision detection add the condition "X isInvicible" (so the player will only be hurt when "isInvincible" is false). And now, when the player is hit, set "isInvincible" to true and set "timer" to 1 second.
Add another event with the condition "isInvincible". This block should countdown the timer, so add the action "Subtract dt from timer" (dt is the value you need to subtract). Add a subevent with the condition "timer < 0", and there make "isInvincible" false again.
If the effects, knockback, freezing and stuff affect the player, program them in the player sheet. If they affect the enemy, program them in the enemy sheet.