First, try redirecting this client to the correct URL-path if the requested URL-path contains your own domain:
# Redirect if hostname is present in requested URL-path (with several variations) and matches my domain
RewriteCond $2 ^(www\.)?mydomain\.com$ [NC]
RewriteRule ^/?(https?://)?([^.:/]+(\.[^.:/]+)+)\.?(:[0-9]+)?(/.*)?$ http://www.mydomain.com/$5 [R=301,L]
# Else return 403 if someone else's domain is in there
RewriteRule ^/?(https?://)?[^.:/]+(\.[^.:/]+)+) - [F]
If that makes this user-agent keep coming back again and again while still prepending the protocol and hostname to the request line, then simply return a 403-Forbidden response when any hostname is present in the requested URL-path.
And if that doesn't work, and you cannot have this guy blocked at the firewall, then return a zero-byte 200 response (empty page) just to keep your bandwidth down.
I should point out that according to the HTTP protocol, it *is* acceptable to include a protocol and the entire hostname in the URL-path, but it is almost never done.
To be clear, your trap rules are set up to detect an HTTP request that looks like this:
GET /trapped-URL-path.html HTTP/1.1
Host: www.mydomain.com
But this user-agent is sending:
GET http://www.mydomain.com/trapped-URL-path.html HTTP/1.1
Host: www.mydomain.com
and so is bypassing your access-control rules because none of the patterns match.
Another set of rules that may be helpful in this case is
# Ban requests with literal hyphens for either or both user-agent and referrer
RewriteCond %{HTTP_USER_AGENT} ^-$ [OR]
RewriteCond %{HTTP_REFERER} ^-$
RewriteRule ^ /trap-script.php [L]
#
# Block requests with blank user-agent and referrer
RewriteCond %{HTTP_USER_AGENT}%{HTTP_REFERER} ^$
RewriteRule ^ - [F]
But I strongly suggest that you get your original trap rules working again first by trying to detect/redirect the client when it adds the protocol and domain to the requested URL-path.
I do not speak either fluent php OR htaccess!
If you want to be able to handle the Web as it exists today, it's time to start getting fluent (or start putting big money into a "consultant account")...
Jim