I believe the "InSaveListOnly" option problem surfaces only with Identity columns, so also double check whether these tables are using Identities. DevForce allows you to use both Identity columns and a custom ID generator, and it's the database definition of the column which determines which path DevForce takes (so you may not be using the IdGenerator you think you are).
I would also encourage you to check if any of your tables have negative ID values, since if not then none of this really applies.
The sample NumericIdGenerator is not thread safe for temporary ID generation. If you are creating entities in the same PM on different threads within your client application, don't. If you create new entities in your server-side code, for example in an RPC method or within any interception logic, then the ID generator will need to be made thread safe. (We have a sample of this.)
The EntitySet save/restore, and ImportEntities too, can be an issue if new entities are involved, since they will receive a new temporary ID during these operations. The actual use case is somewhat esoteric, but if you think it might apply we can look at it further. How you do the save/restore does not matter, the issue is the content of the cache and the order in which entities were created.