It's not a larger server load, because you're actually publishing less as users defederate their content. The SQL is actually pretty simple if you have a content field for blacklisting that the user selects when publishing. On the federating front end, you simply don't publish the content to the instance the user defederated from, as marked in the content field. It's basically one more line in SQL - essentially would be something like:
where content.blacklist != domain
in the select statement.
This is actually already in play to some extent over here at kbin, where @Ernest has made one helluva incredible engine - we've got domain level filtering for our feeds, and the search capacity is getting pretty cool. Having that same capacity for what we publish would make for an amazing platform.