i think the last point "unscheduled halts due to trains crossing tracks is the major culprit, because in morning peak hours on virar-churchgate up fast line, the trains get late in the goregaon-andheri section because of locals that start from goregaon changing tracks and not speeding up there afters since they neet to halt at jogeshwari unlike other locals that are following them. secondly semi fast locals originating from bvi in morning corss over at andheri/santacruz resulting into further delays.
in the evening peak hours, the problem is created by back to back running churchgate - bvi semi fast locals that halt at all the stations after andheri. these trains ideally should cross over at andheri but most of them are made...
more... to cross over at goregaon leading to a cascading effect on all the other virar bound fast locals. Moreover, some bvi bound fast locals remain on fast track till bvi shattering apart the timetable of the other virar/vasai/bhayandar bound fast locals.
simple solution would be to create an elevated crossover at andheri on the lines of crossover of harbour trains at bandra. locals starting at goregaon should run on slow line or they should not halt at jogeshwari at all.
third, borivali bound fast locals in evening should never be made to run on fast line after andheri.