I looked at splitting our source just as x10 did. If you do not split in the right location(s), you will have the exact errors you have mentioned. If you are making multiple source files, it is better to do it as you code rather than taking a large source and attempt to split into that state it is in currently. In other words, I would be inclined to split my source as you outlined, only if I split it at the same time as I was writing the source out. I've split other developments like that with no issues.
I ended up rewriting the entire source we use, making proper sections and having all the items laid out in a neat and concise order. I put all my subroutines together, all the functions together, etc. There is no more of this jumping from one spot to the end over to the middle, particularly when finding subroutines at the end or mixed in the middle. The stuff that was not needed was removed. The result- well let's just say we have no errors or issues with our engine, and we know where everything is.
Over all, it is "programmer preference". Trying to split the work of others can be a pain at times if not done correctly. Splitting your own work- well there should be no issues there.

There's no problem that can't be solved without applying a little scripting.