Как правильно определять какому уровню принадлежит user
Вопрос лишён смысла. Уровень юзера можно определять только относительный - по сравнению с другим юзером, находящемся в том же дереве ссылок и являющимся его прямым родителем. И его можно лишь считать абсолютным - если он рассчитывается относительно юзера, у которого нет родителя.
В принципе ничто не мешает при создании записи вычислять и хранить уровень пользователя относительно корневого пользователя данного дерева рефералов (фактически абсолютный уровень). Тогда относительный уровень определяется как разность абсолютных, если сравниваемые записи находятся в одном ссылочном дереве, либо не определён, если записи находятся в разных деревьях.