У вас проблема не с SQLite а целиком со знаниями баз данных и SQL в частности.
Можно все поместить в одну таблицу(сообщения, достижения, перки, бонусы и многое другое), тогда столбцов у меня выходит порядка 25-27
Нельзя так, это все разные сущности, которые вы захотите расширять новыми полями и что более важно - связывать их с новыми сущностями, например дать игрокам возможность групповых чатов, или например вложения в сообщения лепить или ещё бог весть что, и не сможете этого сделать после выхода вашего ПО в свет. Придется писать очень замудреные скрипты по миграции данных в т.ч. тех которые и не менялись даже.
Пользователи это таблица Users где есть поле ID котрое получает значение при вставке записи и это значение не меняется.
Есть сообщения это таблица Messages.
где есть Autokey получающее значение при вставке записи, есть поле-индекс DateCreate с датой и временем создания сообщения, есть поле Message - текст сообщения, так же поля От кого (ссылка на Users.ID) и кому (Users.ID)
Есть ачивки, таблица Achivements:
Поле UserID (Users.ID) связь с тем кто ачивку получил
Поле даты и времени получения,
поле идентификатора ачивки
поле описания ачивки
поле с картинкой ачивки
Бонусы, таблица Bunuses:
Поле UserID (Users.ID) связь с тем кто бонус получил
Поле даты и времени получения,
поле идентификатора бонуса
поле описания бонуса
поле с картинкой бонуса
поле обозначающее позитивный или негативный бонус
поле даты и времени завершения действия бонуса, если NULL то бонус вечный
Таблица с перками - Perks:
Поле UserID (Users.ID) связь с тем кто бонус получил
Поле даты и времени получения,
поле идентификатора перка (PerkID)
это все легко расширяется новыми полями и если надо обрастает новыми связями с новыми изменениями.
А если вы все в кучу кидаете, на кой вам вообще база данных?
загоняйте все в json/xml.