Without knowing your exact situation maybe you could use the task queue mechnism to ensure that acivities are performed in a first in first out fashion?
Honestly speaking 500 CCU is not a something very huge.
if that is bringing integrity issues then you better first check your domain model to see if you can isolate the incoming data v/s what should get into the DB.
Meaning, dont direct process the actual MF's, better use transient entities.
Also you mentioned data is coming from external sources, so why not rate limit it? - if the infra doesnt have any default way to rate limit, use an entity attribute which is a complex key with the primary key of that entity. So this new attribute assume is the current time rounded down to a minute then due to unique constraint the DB insert query will hit the constraint if you get more than 1 call with the same data.
this is just an example, might give you hints on possible ideas that can be derived