Actually, if you’re just “include:”-ing spf.dreamhosters.com, then it doesn’t matter if the record ends with ?, ~, or -. Since the include syntax won’t generate a fail, only the outer record will do that.
From http://www.openspf.org/SPF_Record_Syntax#include :
“In hindsight, the name “include” was poorly chosen. Only the evaluated result of the referenced SPF record is used, rather than acting as if the referenced SPF record was literally included in the first. For example, evaluating a “-all” directive in the referenced record does not terminate the overall processing and does not necessarily result in an overall Fail. (Better names for this mechanism would have been “if-pass”, “on-pass”, etc.)”
I tested that myself with some web spf testers. Used include records with a hard-fail and the main/outer record with a pass or soft-fail, the main all designation was always used, no matter what the include all designation was. “The include: mechanism is meant to cross administrative boundaries”, so it makes sense.