@Jose
This "only-exec" rule is broken all over, and it's common practice to share library bases, except those explicitly known to be non-shareable. Typically at least all standard system libraries are considered shareable.
About bsdsocket.library
One of the special non-shareable libraries is bsdsocket.library. One of the reasons is that each process needs to maintain certain set of static data about the network stack, and it would be really inefficient if each library function would need to lookup caller task context from some list or array (ok, it could use hashtable or btree). Instead each opener task gets unique librarybase with unique static data in possize and (back)ptr to global base/data (the one found from system LibList). This way no lookup is needed and each function can access the local data directly.