Vamos a ver:
 
1. fetch_all(): devuelve todas las filas seleccionadas y con MYSQLI_ASSOC le dices que te devuelva cada fila como un array asociativo 
2. fetch_array(): devuelve la 
siguiente fila (sólo una, la siguiente), para usar esta función en lugar de fetch_all deberías usarla así:    
Código PHP:
Ver original- $result = $this->_db->query("select * from libros WHERE recomendado != 1  
-      ORDER by rand(".time()."*".time().") limit 6"); 
- while($row = $result->fetch_array(MYSQLI_ASSOC)) { 
- } 
Vamos, que tu método está bien definido, no tienes necesidad de cambiarlo, sino tu método debería devolver un mysqli_result, en vez de un array con todos los datos de la selección. 
Así quedaría si quieres usar fetch array:   
Código PHP:
Ver original- public function get_libros_slider() 
-     { 
-      return $this->_db->query("select * from libros WHERE recomendado != 1  
-      ORDER by rand(".time()."*".time().") limit 6");   
-     } 
Código PHP:
Ver original- <!-- bucle inicio --> 
-             <?php while($libro = $libroModelo->get_libros_slider()->fetch_array(MYSQLI_ASSOC):?> 
-                 <div class="libro"> 
-                 <a href="libro.php?id=<?php echo $libro['id'];?>"> 
-                 <img src="libros/<?php echo $libro['caratula'];?>" alt=""> 
-                 </a> 
-                 </div> 
-             <?php endwhile; ?> 
- <!-- bucle fin --> 
No tiene misterio, sólo hay que leer la documentación oficial para saber como funciona o qué datos devuelve una función del lenguaje...