The thing is this:
When creating an entity using code, like CustomerEntity c = new CustomerEntity();, you'll call the normal constructor which will call OnInitialized etc.
With GetMulti, this same path is followed (the empty constructor is called) but after that, the Fields object of the entity is set to the filled EntityFields object with the data read from the database. This differs from adapter.
So in your case, in getmulti, you'll see a call to OnInitialized, which does work on the fields but these fields are replaced anyway with the fields object with the data from the database. This is due to the fact that the fetch method fills fieldobjects, as EntityFields is a DTO for the data to fetch. This EntityFields object is then plugged into an existing entity, created using the Create() method.
After GetMulti, your entities should have the values from the database.
This is different from adapter as in: adapter entities have a ctor which accepts a fields object, selfservicing does not. The reason is that selfservicing entities otherwise would get a myriad of ctors and we cut them out. it also would give odd code paths for direct fetching data through the ctor. Normally this isn't a problem, as only the fields are replaced by the new data. It is a problem if you do graph initialization from within an entity. the thing however is: should an entity from within its ctor initialize a graph it is part of, or should a method outside the entity do that? It's not as if the entity which initializes the graph owns the related entities.
Is this trackable, as in: is it possible to avoid the init work? No, not at the moment, as the empty ctor simply creates a new, ready to use entity.
I do agree that it would have been better if the factory template would simply call an internal ctor which created the entity class and set the fields object directly.
In your situation, I'm a little puzzled what the best way is to solve this. Creating the graph of default entities at init might sound tempting, however what happens if you fetch the entities, would you then always want to fetch the related entities or not? If not, you'd get the situation where there are related entities however not when the entity is fetched.
I see entity class instances in a graph a result of logic outside an entity, as entity X doesn't own an entity it is related to (example: does Customer own its order entities? if so, does Employee own these same order entities? If so, how can Employee own the same entities?). So IMHO, if you want to create these graphs with the new entity, why not create a factory method for that which builds these empty default entities for you in a graph?