I would suggest replacing this single lock at runtime then. Thus letting the endpoint replace the splock with an RLock.
Then we still have the database thread guard for all "normal" swift downloads and dispersy can get this lock as its will not write anything to the database from within the send_tunnel method.