Как корректно описать PHP класс?
но потом мне стало совсем ничего не понятно - чего это у меня один и тот же класс будет всем подряд заниматься. Там и без того уже сборная солянка - и регистрация, и проверка текущих кукизов, а тут еще и .. 
Именно в этом состоит разница между двумя основными архитектурами ORM - Active Record и Data Mapper.
Data Mapper разделяет работу с бд и бизнес-логику самого объекта. В итоге мы имеем два объекта - UserMapper и User.  UserMapper занимается общением с базой - ищет в БД и возвращает инстанс объекта User, обновляет данные в БД, удаляет строку из БД. Класс же User реализует только бизнес-логику, ничего не зная о том, как его данные хранятся в БД.
Active Record  же держит все в одном классе, то есть сам юзер ищет себя в базе, удаляет, и так далее. 
Я думаю, сейчас настало время перейти к варианту  Data Mapper.
class User {
  public static findById($id) {
    // Ищем в базе, и возвращаем как созданный объект:
    if ($dataFromDB) {
      return new self($dataFromDB);
      // Или что-то вроде того:
      $user = new self();
      $user->load($dataFromDB);
      return $user;
    }
    // Если не находим, то
    return null;
  }
}
Но лучше вместо своего велосипеда посмотреть на готовые ORM'ки и выбрать подходящую, раз с объектом из базы работаешь как с моделью.