If I am reading this right, your understanding is incorrect. Signal's "new messages" push message payload is empty. Upon receiving a message of this type, the Signal app wakes up, fetches the actual messages, and (optionally) displays local notifications for them.

At no point does the push message payload contain message text or metadata, encrypted or not.

This is correct, but the timing of a notification that there is a new message is itself metadata.

So that means iOS is caching the local notifications, not the push event... I wonder why it was needed to begin with, especially for a month