Woudn't a CTE make sure it is only executed once?
like
CREATE VIEW CHECK_WITH_CTE AS WITH CHK AS ( SELECT 1 AS Dummy WHERE dbo.fn_CheckPermissionTVF(2) = 1 ) SELECT BT.* FROM CHK CROSS JOIN big_table BT