I've been using the Verzion call blocker app for several months, and I do like it. Calls will ring with a name of "Potential Spam", if the number matches one on their list. Makes it pretty easy to ignore. They have 3 levels of matching (all numbers on their potentially-spam list, or medium-and-high likelihood only, or high likelihood only - I assume it's one list with a spam score attached to each number on the list) - I have it set to entirely block high-spam-likelihood calls, and let the rest ring through. But, if I see "potential spam", I'm pretty likely not going to answer.
I was waiting for a few legit calls from numbers I couldn't predict ahead of time, so I signed up for Verizon's $2.99/mo premium service, that sends caller ID info with the calls (if it's in your contacts, the name from your contacts will take precedence, otherwise the caller id name will show). This has turned out to be quite helpful as well. With those bits in place, I don't feel any need to block international entirely (it's possible, though unlikely, that I could get calls from overseas friends, would rather not chance nuking those). I also wouldn't want the "block any call not in your contacts" bit, for the same reason - calls that _might_ come in from unknown numbers that it turns out you very much want to take.
I'm annoyed that I have to pay Verizon to get caller ID (brings up memories of having to pay to get touch tone service, ages ago), but I'll put up with it for the convenience. When the phone rings, if it's not in my contacts, I get as much info as possible _right then_ about who it might be (usually, it's spam, and I can instantly ignore it, without worrying that I might miss a legit call). I used to find myself occasionally googling the numbers from missed calls to see if it was legit or spam. Now I know in realtime - I really like that.
The service itself works quite well, though I have found (the hard way) that when the app gets updated, the shiny new version is disabled in iOS's Settings app for call blocking (I can understand why Apple does this, they want you to approve each new version of this thing that is potentially interfering with your calls) - and I have to go switch it back on. If you start the app, it'll tell you it isn't currently enabled (it'd be nice if either iOS told you when it gets disabled, or if the app sent a push notification when a new version was installed). Other than that, it works well.