Is there a way to setup my phone so that when I dial someone who has an account with a voip service (skype, viber etc.) it will use that instead of the regular call? (I need to be registered with the service and the contact is known in the service app's contacts)
This is a feature of gingerbread, if you're using the built in sip client. In Settings -> Call settings there is a setting called "Use Internet Calling" which you can set to "Only for Internet Calls". Then if the contact has a sip number, it will call that directly sip->sip instead of going out over the phone connection.