How about if you draw you image onto another TBitmap and then BitBlt the TBitmap onto the screen...
that way you could see how fast TBitmap.ScanLine is.

Here's some pseudo-code:

if (SrcScanline.Red <> MyTransparentColor.Red) or (SrcScanline.Green<> MyTransparentColor.Green) or (SrcScanline.Blue<> MyTransparentColor.Blue) then
begin
DestScanline.Red := SrcScanline.Red;
DestScanline.Green := SrcScanline.Green;
DestScanline.Blue := SrcScanline.Blue;
end;

I dunno if scanline is faster than on-the-fly mask creation, but you might want to check that out, too.