There is a remote signed NIP (I think , or just something that’s possible anyway) that allows a user to ask a server perhaps to calculate the event id before it’s signed.
You can’t generate an events id before you know the exact content, as it’s part of the hash.
Potentially instead of pay to relay (either 1/sat, have a relay subscription), perhaps min POW is the other option.
At least one relay required a min POW. The issue is you lose a lot of data for things like the event reactions which may not be by clients who use POW.
Paying 1/sat to a relay instead of burning CPU for POW seems like the more desirable approach.. but PoW as a fallback is nice for anonymity.