I would advise analyzing all the alarms all the time, but limit how they reset your message display timer. Even though you only want the highest priority message to appear, you don't want it to appear for 7ms, or 150ms, or even 500ms, you want it to appear for 2 seconds for, as Bernie said, easy and efficient human reading, but also so that any alarm system on the other end of the wire, with its asynchronous processing, has time to log it if necessary.
Many alarm rungs are common in design, often having an expected command match up with expected position within a tolerance or within a time limit. Suppose your message display is set up to follow MSG_Int, you write your alarm logic to turn on and off bits in a file of your choice, for internal use by the process. You may need many of those alarm bits in the fault recovery or "return to auto" aspects of your control software, always process all of them, usually into bits so adding them into any other logic is simpler than a compare. Also, individual alarm states may have their own arrangements as members of Dints or Ints depending on how many there are.
For the MSG value, have a timer that runs continuously, MSG_Dwell, we'll call it on an unconditional rung...how about we put it on the fist rung of he alarm logic, and put all the alarm logic in one file that runs as one of the last, if not the very last routine in the code.
For each and every alarm rung, add a branch that, only when MSG_Dwell is done, (XIC MSG_Dwell.DN), MOV the alarm code for this particular message into the display value and RES MSG_Dwell. On the next alarm rung processed, MSG_Dwell will not be done, so even if the internal logic is true for the condition, and you can use that in your control, the MSG value is not updated until the timer (1.8 to 3 seconds depending on message length) is done.
Also, I write my alarm logic so that alarms whose conditions remain true cannot be reset to prevent adding repeat alarms to any lists or logs. I do this by putting the reset logic for each alarm as a branch around the alarm conditions with XIC of the alarm bit itself and the NOT reset command. If the conditions are still true, the alarm is still true no matter how fast, how many times or how long in duration you press reset.
Have you ever programmed logic to measure the speed at which operators can press reset? If not I highly recommend the exercise, it is entertaining for sure.