Первое. Подумайте, а должны ли клиенты все напрямую ходить в БД. Разграничение прав у вас не работает: клиентскому коду нельзя доверять. Вам стоит сделать выделенное приложение сервер.
В БД создал таблицу, которую клиенты прослушивают каждые 5 секунд, но возникает вопрос на слабых ПК Клиент зависает.
Тут что-то не так либо у вас зависает сервер, а не клиент. При увеличении количества клиентов нагрузка на клиентов обычно не растет. А с одним запросом раз в 5 секунд может справиться совсем любой компьютер, если только не пытаться вычитать всю базы данных каждый раз.
Как реализовать связь между клиентами по TCP или UDP протоколу (желательно организовать клиент и сервер в одном проекте)
Связь бывает сильно разная и с сильно разными требованиям. Если вам нужно именно передавать сообщения, то возможно вам подойдет библиотека zeromq. Или, может быть, вас устроит держать открытый tcp сокет между клиентом и сервером и пересылать сообщения через него вручную, снабжая их разделителями.