Ok. For anyone facing a similar problem, this problem seems to be associated with some limit to the number of Pyro proxies that can hold simultaneously a reference on a remote object. Beware however that I'm only conjecturing this. This conclusion is based on the fact that adding
del self.scheduler
right before
if self.depth < 5:
in the client code both limits the number of alive proxies and fixes the problem (giving it enough time, the code go up to depth 5 using "for i in range(10):").
EDIT:
As I understand it from here and from some testing, the value of THREADPOOL_MINTHREADS is linked to the maximal number of connections or proxies to a remote object. If I set it to 4, the program freeze (much like if it was deadlock) when the fifth proxy tries to acces my remote object.
There is also some possibly related information here.