I'd compare runC to LXC as opposed to rkt. It just takes a path and configuration and starts a container, without managing images or networking topologies. rkt is on the same level as cri-o (or containerd) since it also implements image handling as well as other related things.
Also, rkt (by default at least) uses systemd-nspawn to create containers. In runC we have our own implementation called libcontainer.