Você só precisa excluir aqueles que são amigos diretos, além de serem amigos de amigos. Eu reorganizei os aliases da tabela para que fique um pouco mais claro (para mim, de qualquer maneira) o que está sendo recuperado:
SELECT
u.*
FROM
user u
INNER JOIN friend ff ON u.user_id = ff.friend_id
INNER JOIN friend f ON ff.user_id = f.friend_id
WHERE
f.user_id = {$user_id}
AND ff.friend_id NOT IN
(SELECT friend_id FROM friend WHERE user_id = {$user_id})
Também elimina a necessidade de excluir o ID do usuário que está sendo consultado.