I found a way to do this , but it isn't a particular elegant solution. ;-)
The trick is that in the end , you have to create a GD object Silverstripe can work with. Other than that , it is pretty much straightforward GD work.
The quality can probably be improved, and it eats quite some diskspace and processing power, but it is good enough for what we wanted to achieve.
Look at http://www.fahrenheitstore.nl for the result.
// Read the watermark picture
$watermark = imagecreatefrompng($URL . '/images/watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
// Read Full size Silverstripe image
$imageToWatermark = imagecreatefromjpeg($this->URL);
// Calculate sizes
$size = getimagesize($this->URL);
$dest_x = $size - $watermark_width - 5;
$dest_y = $size - $watermark_height - 5;
// Do transformations and save image in assets
imagecopymerge($imageToWatermark, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 40);
imagepng($imageToWatermark,$webroot . $this->filename . "_watermarked.png");
// And this is the trick ;-) Create an object Silverstripe can work with....
$GDoutput= new GD($webroot . $this->filename . "_watermarked.png");
Good luck !