*Answered in a separate e-mail correspondence with MathWorks:
"Unfortunately, the NewHeadOfQueue priority is hard-coded, and there’s no direct way to influence. Our developers don’t particularly like this behavior either, and they are considering altering in the future."
Currently, the only fix is to manually set the event resolution paths leading up to the queue such that the higher priority entities will use higher event priority servers/gates/etc.*
The problem I'm having is that with multiple entity paths with their own generators and model behavior, multiple entities may reach a priority queue (downstream after a path combiner) at the same sim time, and because the NewHeadOfQueue event is scheduled at SYS2 immediately after the arrival of the first entity, this event will be executed before the other entities reach the queue at the same sim time (e.g. if they come from server blocks or gates with a priority even as high as 1, which is the highest you can set for servers). Which entity passes through the queue first then depends on different event resolution priorities in that entity's path to the queue, or, if they're all the same, which entity's generating block was placed in the model first.
Ideally, I would like my NewHeadOfQueue event to have a lower priority than any paths upstream of the queue such that if multiple entities will reach a queue at the same sim time, the highest priority entity according to the priority sorting attribute is the entity that passes through the queue first. I'm not sure if that's possible with the way SimEvents works, but I suspect it should be since hooking a queue up to a gate means that the gate's entity request event at SYS1 cuts in before the NewHeadOfQueue and can change the entity at the head of the queue between the scheduling and execution of NewHeadOfQueue.
Alternatively, if I cannot change the priority of the NewHeadOfQueue, is there some sort of other way to achieve the same behavior?