I get similar results most of the time. It appears to fail quite randomly though, sometimes the channel setup fails and sometimes the read() just hangs silently. Hangs seem to happen more often with scp_get().
The channel/exec method is most granular and so I've managed to get it sort-of-working by re-connecting and re-opening whenever things fail. When this job is done, the code needs to be destroyed for the sake of humanity.