Каждая программа должна делать одно дело, но делать его хорошо. Многопротокольный unix-way IM клиент, следуя этой философии, наверное, должен быть выполнен как однопротокольный + транспорты. Какой протокол (возможно, с указанием программной реализации) лучше выбрать за базовый, на который будут перенавправляться всё остальное?