(sure - there are tricks to limit rates anyway, like the script in
contrib/qos, but to have it generally available the block download
needs to be more robust first)

One thing we could consider as a short term solution (if headers first+parallel downloading will take a while, which seems plausible) is to add a service bit that says "I have chain data and am willing to Bloom filter it for you, but I won't serve full block data", and then just exclude all of those from the chain download logic. It should not be a deep change to the code headers first is impacting, and would allow home users who may have no tolerance for block chain uploads at all to still take part and offer useful services to the network.

I know Pieter likes the idea of an "archival node" service bit, or something like that. I'd been thinking that the stored chain height value would be better, but perhaps we need to divorce "I have CPU and can filter" from "I have bandwidth and can serve" more vigorously.