in r7064 I've added -- experimentally -- a modified version of 2:
In the special case of upload set to 0, libT will pretend the torrent's upload rate to unlimited, but choke all the peers and stop responding to piece requests.
In the special case of download set to 0, libT will pretend the torrent's download rate is unlimited, but tell peers that it's not interested in their pieces, and stop requesting any.
In both special cases, there will be a short inital period where any pending requests work their way through the pipeline. But IMO this is just a minor, transient problem.
This handling of the '0' case is actually better than in 1.34 and earlier, since those versions didn't bother changing the "interested" and "choked" states.