It goes hand in hand with the fact that there's no reliable system for identifying the origin of an incoming call. Telcos won't let Caller ID information be reliable enough to be used for blocking purposes, so there's clearly a lot of money in aiding and abetting the telemarketers/scammers.
Let's assume caller ID info is perfect, that doesn't actually solve the issue. If a telco gives a local business e.g. 100 numbers, and when those numbers call out it says "Whatever business, 123 main street, somecity" you'd just see the VoIP provider's info each time a scammer calls you.
Right now you can often determine the address/owner of a telephone number, but that doesn't tell you who REALLY called because the VoIP company never passes on that info even to the telcos.
What we need is a law that forces VoIP providers (inc. Skype) to forward some real caller ID info onto the telcos, and then the telcos need to forward that info to the end user.
The insecurity of the caller ID system (i.e. it is trivially spoofed) is a legitimate problem however, since even if the VoIP provider did pass on the info, the scammer could override it.
It seems it would be better just to outlaw spoofing the identity of another entity (to prevent SWATting), but still allow blocked number calls. Spoofing numbers for fraud should also be deterred somehow.
Even without this, one could develop Bayesian filters to detect likely spam calls and run them through a captcha first.
Whitelist filtering. Known contacts are allowed, preferably on a time of day basis. Eg your auto repair shop can't call during dinner. Family and boss, 24/7. Blocks when you need to go heads-down dark.