If it is the same 10 alarms in every case, Program_Alarm might deserve another look. Effectively, you only make 10 alarms, and the system does the rest in the background (assuming you're not in 1200, of course, but 1000 alarms sounds huge for 1200).
The Alarm text for each alarm can be made dynamic to include things like a tag value or the instance DB of the block it's called in. This way you can make one FB, with whatever alarms, and then every time you call the FB again it calls the alarms for you without you doing anything new. In Runtime the HMI sees MOTOR 1 Overcurrent, Motor 2 Overcurrent, etc, but it automatically pulls the MOTOR 1/MOTOR 2/etc dynamically from some something like the instance DB and you don't need to worry about it.
If your 100 FBs is 1 FB called 100x, this you could call program alarm directly. If each FB is truly different, than you could create an Alarms FB to call from inside each one, and map the alarm tags to it. Inside the Alarms FB you call Program Alarm.
Will having several hundred instances of Program_Alarm in the program use up a lot of memory/resources though?