One way to implement it in BSF is via a DLL which gives a lot of power in general.
The sprite's filename could be passed to the DLL, plus perhaps a diameter of the intended holes.
The DLL then loads the sprite and analyzes it, all spots which could contain holes are returned... but I guess this would return to many spots and would require to much data to be handled.
Another idea could be to limit it to some polygons and see if the point is inside the polygon or not...
So the sprite is passed to the DLL, the DLL should remember it, the DLL should construct a suiting polygon for around the sprite like a convex hull.
Later during runtime/gametime if a bullit hits the sprite the DLL is queried to see if it can place a bullit hole at the bullit position near the sprite...
If it can a bullit mark is placed there otherwise not...
However maybe this feature is overkill since ships are zoomed out a lot... so first a little demo to see if it would be good or bad would be nice

I guess it's overkill

Instead of doing a convex hull, the sprites pixels in a diameter could be checked as well... if a certain percentage of it is present it could be filled with a hole... and return true...