The extra fields are hidden, so users see nothing additional.
One field is blank, the other pre-filled.
But when read by a bot it sees both as a valid fields to be filled in, so fills them in.
I have the blank field set as an obvious 'type' - Zip (post code), so a bot will attempt to fill in a zip code.
The other is set to 'City' but with the words 'Type Here' pre-filled.
A bot will overwrite the field with a city name, so changing it from 'Type Here'.
Either fields being filled-in/changed cause the form to be seen as being filled in by a bot, so is rejected.
As users can't see the fields they never alter them.
Works very, very well!
Cost is not an issue - but I really don't like normal CAPTCHAs, if that's what you mean by a $6 unbreakable one?