In the UK, there is a way of doing this, but you have to have it enabled on the line.
Way it works is this; caller ID consists of two parts. One is the public visible bit. This can actually be set by the caller -- unavailable or to some other number (this is often used by companies to export their main switchboard or contact centre number).
The other is the real dialler as determined by the dialler's incoming exchange. It's used as part of the billing and routing systems. This is stripped off at the receiver's exchange.
So, in order to be able to block these, BT implemented a system where you can type a *-sequence on your phone and the exchange interprets this as an instruction to block calls from the last caller to dial into that line -- using the real caller ID (which the exchange has), not the public one. Diallers then get a ringing followed by a robot voice which says that the target number is no longer accepting calls from them. ISTR there's a buffer of 5 blocked numbers available.
(In other words, yes, the UK landline system CAN distinguish between different diallers when the receiver can't.)
Mobile networks don't seem to support these things; I don't know why.
A possible solution may be that you can often assign contact numbers into groups and give a default action to groups -- so you could redirect "unavailable" to answer machine if you can put it in a group.
Also, in the UK, there are two of these messages; "withheld" is from a caller who isn't exporting an ID. Generally these will be companies inside the UK who don't want to export a number for some reason. (I have no idea why employment agencies wouldn't want to, but almost all of them apparently don't.)
"unavailable" means a diallable number (rather than a billable one) actually can't be determined. Certainly to my number, these are without exception recorded messages touting "competition win" call-back scams from overseas.