About source routing:
What does connectionless or stateless mean?
Each packet has a destination address. Each time a router sees a packet it considers only this particular packet. It looks up the address in its forwarding table and forwards the packet accordingly. This packet does not change anything on the router. In a statefull mode a packet could change router's state, which would in turn affect forwarding of subsequent packets.
In the case of source routing instead of having only one destination address, the packet contains a list of addresses. They are effectively routed one after another. The router treats the packet the same, it takes "current" destination and routes to it. When the packet reaches the "current" destination, next destination on the list becomes current and the packet is routed again. This does not change internal state of any router.
In other words: It is stateless because every packet still contains the full list. If you were to insert the list in only one packet and then have the router remember it and use it for subsequent packets, then it would not be stateless.
About flow label:
With regards to what is written in the rest of the sentence:
This is the case where theory does not exactly work. You have to design layer 3 while considering properties of layer 4. The layer 4 problem: reordering affects TCP's performance. TCP will correctly deal with reordered packets and restore the original stream. However congestion control will kick in erroneously and bandwidth will sink (I believe it is better now). Congestion control will kick in after 3 duplicate ACKs which will happen if 3 (4?) packets are reordered.
Now a router can have several next hops for the same destination (I will call them entries). In this case the router will choose one entry and forward packet accordingly. Classical example is called ECMP(Equal-cost multi-path routing (ECMP) is a routing strategy where packet forwarding to a single destination can occur over multiple best paths with equal routing priority/cost). It is used for load balancing - distribute traffic evenly between several paths (each entry corresponds to a path). In theory you should be able to decide for each packet individually which entry to choose. But if you send different packets of the same TCP flow over different paths they will come reordered. As I said it is highly desirable to avoid this situation.
How this could be done?
You take values of several fields in the packet which could identify such a flow (called flow identifier). You compute a hash of these values. The resulting hash is a number between one and "number of entries" and you select the entry with this number. This is still stateless. In IPv4 we usually use 5-tuple flow identifier <source ip, destination ip, protocol, source port, destination port>. Yes this does mean that the router needs to look into TCP header. In IPv6, in order to avoid this, end system puts some meaningful (to it) identifier of a flow in flow label. An the flow identifier becomes <source ip, destination ip, next header, flow label>.
Similar shenanigan happens in your network card when it distributes arriving packets between CPU cores.
Regarding flow label in general:
There are other situations when you would want to identify several packets of the same flow. Most of them are in Quality of Service. In this case the forwarding is not necessarily stateless.