I also prefer to use separate packages rather than child packages. With separate packages there is no need to have a job per package, just have one job that executes the packages in the correct order. If there is a problem with one package executing then it is easier to correct that package then restart the job at the step where it failed.
If the packages are in the same project (which they should be) then you can use project parameters to define connection strings and project wide parameters.
This is how I organize my ETL architecture - There are two main phases, staging and posting. I create tables for staging the initial data that is extracted. The staging phase includes data cleaning and performing any lookups into other systems for dependent data.
Once data staging is complete and all rules for data quality have been performed on the staged data, the data is then sent to the posting tables. The design of the posting tables is a mirror of the final destination tables, the final destination for the data before being committed to the DW.