I'm not sure about a method to prevent certain fields from being edited when a feature is updated, but I thought of a workaround for your specific case.
Could you turn on editor tracking and have the ID field calculate based on the "Created On" date field? The Created On editor tracking field will only populate the moment the feature is created, and does not change every time the feature is updated.