I would say that using Linux VoIP would be the cheapest.
Fonality Trixbox
Fonality trixbox CE, an Asterisk-based PBX Phone System (formerly Asterisk@Home) | trixbox
It comes with Community Version (Free) and Commercial Version.
All the inter-communication (extensions) can be set up easily. You just need to connect Trixbox to an VoIP Service Provider to handle your outgoing call (ie. Domestic or International)
Trixbox is very easy to install and you can configure most of the stuff via web interface. But it's better that you know some linux command in case something does not work properly.