Как часто оба звонящих находятся за NAT-ом?
В 99% случаев.
Сидеть за NAT не означает что p2p нельзя установить. NAT бывает разный. В большинстве случаев WebRTC (не знаю что такое peerjs, но он по-любому под капотом использует WebRTC) в большинстве случаев легко обходит NAT и устанавливает p2p соединение. Но поднимать сервер всё равно обязательно. ОБЯЗАТЕЛЬНО. Для любого production приложения. Это не сложно. Готовых проверенных решений, которые нужно просто сконфигурировать, много.