You could use a Script Task to check for a valid connection before your Data Flow and then take different actions depending on the result. For example a Success branch executing your data flow and a Failure branch redirecting to some kind of logging.
Here's an example:
SSIS Nugget: Verify a data source before using it
It doesn't address the problem of altered metadata, though. I'd be thinking of some kind of error handler attached to the DFT object.
____________
Just my $0.02 from over here in the cheap seats of the peanut gallery - please adjust for inflation and/or your local currency.