Such an interesting question, I will be keen to see the other responses.
I am sure their is a more elegant solution but I would just hook into the wp admin css and hide those pages from the users view like this.
// Hook into the admin head
add_action('admin_head', 'hidepages_css');
// Add our custom CSS to the admin pages
function hidepages_css() { ?>
<style>
/*Each page entry is within a table (table has a class of .pages) and has a unique ID, use your browsers inspect element to find the ID of the pages you want hidden from users view */
.pages #post-5, .pages #post-9, {
display: none !important;
}
</style>
<?php } ?>
You can also set it so that only you can see the pages as an admin but your users with lower roles cant.
// Check if the user is an admin
if ( ! current_user_can( 'manage_options' ) ) {
// Hook into the admin head
add_action('admin_head', 'hidepages_css');
// Add our custom CSS to the admin pages
function hidepages_css() { ?>
<style>
.pages #post-5, .pages #post-9, {
display: none !important;
}
</style>
<?php } ?>
}