Setting transport.tcp.compress to false fixed the issue, lesson learned reevaluate previous cluster settings on new versions. Shard recovery time/speed now match what I configure in indices.recovery.max_bytes_per_sec
Thanks for all the replies and help figuring out this issue.