If you felt that you had to “hack” anything, you definitely strayed down the wrong path. No such thing should be necessary, and, as you can readily guess, it can get you a lot of trouble. You should be able to treat this like a “install modules as a non-root user on shard-hosting” situation, specifying (within ordinary cpan/cpanm, and in the usual way) your own “local” package directory and of course your own overrides for PERL5LIB. At that point, you should be able to install any package, including List::Util, and confirm that the desired copy winds up in that designated place. You should be able to do all of this with no special privileges at all. (You want the system libraries, as maintained by the opsys’s package manager, to remain “untouchable,” as they are.)
It should not matter whether the package has any “XS” content or not.
Unfortunately, not every package out there correctly specifies the minimum version that it needs for its prerequisites, and some don’t accurately list the prerequisites that they do have. The result is that cpan/cpanm does not realize that a later version of something needs to be installed as a pre-/co-requisite. But you ought to be able to manually install it, then repeat the previous installation, and the manually-installed version ought to be properly seen and incorporated.