What you want to do, is while loading the bitmap, create the surface to be able to hold the image, and all the rotated images. So if you want a 10x10 bitmap with 8 directions, create an 80x10 surface. Then when you are loading it, do the rotation algorithm at that time, not during run time.
You could probably use the PlgBlt to do it, I'm not sure how effective it is, but I bet you do not want to be using it at runtime. Or you can build your own rotation routines to handle it. Either way, do it during load, and not during the blt.