As SYS, grant select on v_$session directly to one privileged user with grant option. (Someone who is a DBA anyway is a good choice)
As that privileged user create a view using the same query you have above. (USER_SESSION is a logical name)
create a public synonym for your USER_SESSION view.
grant select on USER_SESSION to specific users, or to PUBLIC.
In this way, v$session is not available to the average user, but USER_SESSION is, and works as you would like.