On bedrock, you can still achieve a slightly sloppier version:
execute @a[tag=!assassin] ^^^1 detect ~~~ air 0 execute @a[tag=assassin,r=2] ~~~ tp @s @s
Unfortunately, you'll have to copy and paste this command into chain conditional always active blocks attached to the original repeat always active command block, changing ^^^1 to ^^^2, ^^^3 etc. for each consecutive command block.
Set all that up, and any player who runs
/tag @s add assassin will become an assassin and able to be frozen.
You'll probably also want to make another repeat always active command block with
execute @a[c=1,tag=assassin] ~~~ clone [coordinates of all command blocks including this one] ~ 0 ~ so that the command blocks will move to the players so they can't just leave the area affected by the command block and not be frozen.