All I meant by wrapping was to try replacing EThing with TEnumAsByte< EThing >, but as your link suggests this should no longer be needed. Although I have come across cases where a UPROPERTY is treated differently from a UFUNCTION parameter.
Did you try renaming your type as I proposed and then altering the function signature to be:
UFUNCTION()
EMoveDirection CalcDirectionFromTickVector( const FVector MoveVectorThisTick)