There's only one thing I know for sure - your images will be NEVER secure if you display their thumbnails based on the real URL.
But I have a few ideas, the first one looks great and should work for you. Mixing them together will make accessing your images much more harder.
Edit wp-includes\media.php file.
Line 435:
$suffix = "{$dst_w}x{$dst_h}";
$info = pathinfo($file);
$dir = $info['dirname'];
$ext = $info['extension'];
$name = wp_basename($file, ".$ext");
Playing with $suffix and $name could do the thing, give it a try.
Eg. changing $sufix to "something" will output thumbnail names as:
uploads/my_image-something.jpg
Still easy to guess, but what will happen when you add something before "my_image"? Something random + random jpgs names = seems pretty secure to me :)
Use TimThumb.
It creates thumbnails "on the fly", eg. you have www.domain.com/myimage.jpg and you want to display 200x200 thumbnail, so you just put timthumb.php wherever you want and then write something like:
<img src="timthumb.php?src=www.domain.com/myimage.jpg&h=200&w=200&zc=1" alt="">
It's not perfect but always harder than plain link, especially when it comes to bot image harvesting.
Use Watermark plugin.
Probably the most "secure" option, especially when you create thumbnails before adding watermarks to the full size images.