Your redeemScript contains the length byte for it. The redeemScript is really just a script without any prepended length byte. So for your script, it is
Note how it begins with 52 and not 47.
How P2SH works is that ...
You are computing just the P2SH address for the segwit script. However it is not just P2SH, it is a Segwit script wrapped inside of a P2SH. You actually have to first take the witnessScript (the multisig script or segwit redeemScript) and make a P2WSH output script with it. Then this script becomes the redeemScript for the P2SH script.