Warum zeichnest du denn das Bild in einem Timer? Allein die Tatsache, dass die Objekte der Maus hinterherhängen, könnte dir schon den Tipp geben, dass du das Bild vielleicht einfach bei jeder Mausbewegung oder Änderung neu zeichnen könntest - eventuell dabei nur den Ausschnitt, der sich tatsächlich geändert hat.
BitBlt ist schon sehr schnell, eine Verbesserung über Scanline würde ich eher nicht erwarten. Ein intelligenteres Zeichnen (wie gesagt, nur die Dinge, die sich tatsächlich geändert haben - bei vielen Objekten vielleicht auch einfach alles, was hinter dem Objekt liegt und alles was davor liegt in jeweils eine Bitmap, dann musst du nicht alles neu zusammensetzen sondern immer nur Hintergrund, Objekt und Vordergrund zeichnen) könnte jedoch eine erhebliche Beschleunigung bewirken.
Davon abgesehen, je nachdem, wie du dein Bild zusammensetzt, insbesondere wenn es sich um eine hohe Anzahl von Bitmaps, eventuell auch noch mit Transparenz, handelt, kannst du das mit Direct3D oder
OpenGL natürlich drastisch beschleunigen. Die hier im Forum herumwuselnde 2D-Engine Andorra2D dürfte auf jeden Fall einen Blick wert sein.