You are exactly right. All the traditional means (like blocking a callerID) is far past it's useful time. The dialer companies are getting smarter as well. It's BIG business for them, so it's worth the money to figure out solutions.
Also, it's very difficult to error on the side of caution - you do not want to block a normal phone call, or your upstream will stop sending you calls and you lose money.
Typically, a dialer customer will hangup once an answering machine is detected (usually around 2 seconds into the call) - causing lots of short duration calls. What the dialer customer's are doing now, is simply holding the call open for longer, to raise their overall ACD. It's a tough game. The moment telecom carriers start caring about what the call is (call types, information in the call, etc) - they become liable.