内部の処理を少し解説させていただきますと、テーブルは複数行選択の場合、選択行位置のリストを保持しており、このリストは数字の小さいものから順に並べられています。メソッド「選択行の位置を取得する()」では、常にこのリストの先頭(最小の選択行位置)を返します。そのため、選択した順序にかかわらず、選択された行位置の中で最小の数字が返ってくる状況です。
すべての行位置を取得する方法としては、日本語化されていないメソッド「getSelectedRows()」をお使いいただくと、すべての選択行位置のリストが得られます。多少処理が増えますが、リスト格納変数に入れて値を取り出すことで、ご希望の処理が実現できるのではないかと思います。参考までに、使い方を示すサンプルを添付します。