They are not unique.
A simple proof would be to make a trivial algorithmic change, like check that we can change the root's colour, and provide a case where that is still valid, for example:
1-B
/ \
0-R 2-R
add(3):
1-B
/ \
0-B 2-B
\
3-R
But the new algorithm could quite as easily yield
1-R
/ \
0-B 2-B
\
3-R
The root is a different colour but of course the trees are both still valid RB trees.
This may seem a little trivial, but you can extend the idea (if you want a proof that is less trivial) to check for more than just the root. You could check O(1) levels deep to make a non-trivial but valid change, which would generate two different algorithms with the same running times.
For example, check that the first 10 rows are full and black, and change the odd ones to red, would yield an additional constant work (i.e. O(1)), and a new algorithm.
I should note that this is simply a proof of non-uniqueness, not a bound on the amount of non-uniqueness. I.e. something trivial like this is enough to prove the point, but it leaves the door open for RB algorithms that differ in more fundamental ways.