Я хотел бы предложить разные модели и таблицы для покупателей и продавцов, так как это логически разные объекты. CustomerModel будет взаимодействовать с вашими клиентскими приложениями, а SellerModel будет взаимодействовать с вашим внутренним приложением. На мой взгляд, это лучший способ.
Тем не менее, если вы хотите, чтобы они были в одной таблице, я бы предложил добавить столбец типа в таблицу users и затем использовать принципы наследования Single table. Преимущество STI состоит в том, что вы можете сделать свой код гораздо более модульным и добавить методы, специфичные для покупателей и продавцов в их соответствующих моделях, которые, в свою очередь, наследуются от UserModel.
Вот ссылка для наследования одной таблицы, которая может быть полезна: Объяснение наследования одной таблицы
Для контроля доступа вы можете использовать драгоценный камень Pundit. Вот ссылка github для того же самого.