SSIS Package Data Flow Task RollBack on Error
I would design each package as a self-contained unit that can be rerun without any manual preparation or clean-up.  Relying on SQL transactions can dramatically slow execution and as you noted does not cover all the non-SQL Tasks.