C: more walkall changes: mark extern packages in should_save

see testcase 348. we need not only to consider Foo, we need to mark it, because
it is external (not a B::C dep) it is there for a reason.
likewise change the logic not to include interim packages
only for internal packages: no B if needed for B::OP only (questionable also)