minKnownPeers causes the client to re-execute DNS peer discovery again and again until the number is reached. It should therefore be low enough to be easily reached with DNS peer discovery. We'll add more soft low limits that trigger peer discovery through other means (including the p2p network "addr" command).
All previous blocks were being retained in memory because prev_hash contained a reference to the buffer from hash in the previous block. And that in turn has a reference of the block object, so no block could be freed. By creating a fresh copy of the hash buffer we avoid the issue.