How to hide W3 Total Cache from non admins?

You can try to use remove_menu_page(), so you code example would be like:

function hide_w3tc() {
    if (!current_user_can('manage_network')) {
        remove_menu_page('w3tc_dashboard');
    } 
}
add_action( 'admin_menu', 'hide_w3tc',11);

where we use a priority greater than the default of 10, since the W3TC menu page is added via

add_menu_page('Performance', 'Performance', 'manage_options', 'w3tc_dashboard', '', 'div');