A few years ago I refactored a _one big script_ into packages (Make everything an object?
). Four of them, actually, not a million miles away from your list. :-)
While that post revolves around OO the general idea would apply without it as dragonchild pointed out.
I found the points made in this thread by Corion and davido to be true, particularly the separation of concerns and the testing.
If you carefully design a simple API for each package and stick to it you have far less "package-management to ... existing files" and no need to "doublecheck all the places I've invoked those functions". You may need a couple of runs around the block before you get the 'model' right but I think it is worth it.