Wenn du das nicht mit FireMonkey programmieren willst/kannst, dann lade doch mal Graphics32 runter und verwende Layers.
Ein gutes Beispiel findest du unter:
Graphics32\Examples\
Vcl\Layers\Sprites_Ex
Du kannst BitMaps (inkl. Transparenz, also ARGB) definieren, und die Z-Order festlegen.
Wenn du die Dinger dann rumschiebst, gibst du lediglich die neuen Koordinaten der Bitmaps an.
Das Ganze läuft ruckelfrei und schnell.