Please pardon me for trying to answer this question. I may be wrong but I want to try because I am interested in knowing how things are implemented.
I think lavaan already implemented the proposed approach. I believe log likelihoods are not computed for each individual, but for each missing data pattern.
After running the following line in the original code:
fit <- sem(myModel, data=mydata_partb_missing,missing='fiml')
You can take a look at the following slot:
fit@SampleStats@missing
It contains the sample statistics for each missing data pattern. To my understanding, this slot is used in the discrepancy function if missing = "fiml".
By the way, I think the proposed method can indeed be somehow applied, e.g., by telling lavaan which rows have complete data and so it will search for missing patterns only for rows with missing data, because it is fast to identify rows with complete data. The slow processing time in the missing data scenario is due to the time spent on half of the sample without missing data.
Please correct me if I am wrong.
-- Shu Fai