I have adjusted my script. It is closed to what you have written here except that I rely on my Field.Enabled field instead. If the field is not enabled, it is because it is not in the database. By that, I can easily define my script.
So, now, for the same simuation, instead of 5.5 hours, I can get it to do the same task in 18.21 minutes.