I am thinking Penguin is only half of the algo that killed all these sites. I know I read, or heard, somewhere that Google had this algorithm that basically looked for a huge similarity between the content on your money page and the page that had the link to your money page. If the content was similar, the page that was linked to got a flag. The only purpose of this bot was to seek out these pages that were similar. Obviously it was looking for spun articles. When it found them, it marked what they were linked to for Penguin.
Then they deployed Penguin to be the executioner. I think the reason some sites survived and others were killed simply is because bot #1 didn't finish its crawling of everything. A few sites slipped through the cracks.
So I really doubt it is about the links, I believe it is all about the content around the links that are pointing to your money site. That was the indicator.
I think we assume it is the links because for the most part, in a spun article we are still using the same anchor links so we blame it on that.. But I honestly do not think they are the cause, they are just the links to the relationships between your money page and the page with the link.
Think about everything that went on with the blog networks.. why some of them were removed from the index... Lots of similar content pointing to similar content. Some of us, like me, basically had a lot of apples pointing to apples. The sites that seem to have made it through unscathed had oranges pointing to apples.
Hell, for all we know one of the aspects of Panda could be to search and flag sites as well as rate the on-site content for some sort of numerical value. If the page has no links out, then the page gets a zero, if Panda crawls a page with a link and follows the link and the content on the landing page is vastly similar the page it came from- get a 1... Well if you have 100 links pointing to your money page, each time you get visited as a result of that bot following a link.. it's pretty easy to rack up a "score" each time you get a 1 added to the tally from a visit... Expressed like this 0=45 (zero links out, 45 from similar content in)
Send out the penguin bot to kill every site it finds with an accumulated score over a set number... Could be 5, could be 10... That is the unknown. It could look for any site rated 0<20 or higher and give you some sort of penalty.. 5 places in results for every point over 20...
Anyway, just a theory and my 2 cents but it does seem to be easy to deploy something like that and it is possibly a reasonable explanation for a lot of things. In this theory it would be fairly simple to isolate a certain segment of link types and issue penalties for only those link types.
I am sure it is more complex than that, different columns for different types of links... but the principal could still be the same.