ERRORLEVEL is 32-bit because (1) nobody has ever (until now!) needed more, and (2) 64-bit returns would break CMD compatibility.
But there's no reason you have to pass it back through RETURN or ERRORLEVEL; you could as easily put it in an environment variable (and have more bits than you could ever use).