The Ethernet.begin(mac) function is run only in the setup() routine, so you can forget about that being blocking, which it isn't. It returns whether it succeeds or fails. It is up to you to block there if the code needs that connection.
The connect function time is dependent on the server, but even it doesn't block if the connection cannot be established.
I know nothing of the other third party ethernet code.