How are you synchronizing the lanes at the receiver? When the receiver is enabled it looks for a pattern to match. Unfortunately that pattern is hard-coded into the transceiver instance so when you change data, you would also need to change the match pattern. If you want to have an arbitrary match pattern, then you need to implement it in your fabric logic.
Without a match pattern, your serial bit stream will convert to bytes/words at an arbitrary bit offset. This does not explain why your sync pattern "0101" is detected as "1111", though perhaps you are seeing high bits from your final counter value, i.e., LSB-to-MSB the bits transmitted would be 1010-0000-1000-0100-1100-0010-1010-0110-1110-0001-1001-0101- ... I don't immediately see a 0-3-6-7 pattern in there ... but you get the idea.
You should simulate this before looking at hardware. Eg. see the Arria V GZ example here
https://www.ovro.caltech.edu/~dwh/correlator/cobra_docs.html Cheers,
Dave