I can’t improve on your result.
Could you give me more information on number layout? As I understand it, text is read from right to left but numbers are laid out like in Western scripts, i.e. most significant digit at left (this does not mean numbers are read LTR since you can pronounce them RTL – there are inversions in number reading e.g. in German where unit is told before dozens: vierundzwanzig (24) is spoken as “four and twenty”). So, visually numbers look LTR for us Europeans but may be read RTL which makes no exception in your language.
The problem may come from the dot separator. Since it is considered neutral in Unicode (it is used as a decimal separator in many languages), multi-level number like 1.2.3. is considered a homogeneous block with regard to bi-directionality. Hence, 1.2.3. is a single “number”. It is laid out as “1 2 3” with only the position of the final dot sent at head .1.2.3 (why? This seems illogical but a “number” with several separators is not a standard decimal number).
I admit this is perhaps not the correct way of rendering multi-level number since the number is not a single “number” but the concatenation of n elementary “numbers” (levels) which are “pronounced” (read) separately, main level first, i.e. at right.
I think this is a bug. You should submit a bug report clearly explaining the rules. These rules probably apply in other RTL languages (Arabic and Hebrew among others).
The impossibility to chose another separator than U+002E FULL STOP prevents designing any workaround. I was thinking of using a character without the “neutral” direction property.