With Chrysalis, I assigned the “modifier when held” secondary action to several keys on my home row. But I can only do so for such keys, which do not already make use of the “automatically press modifier option” for their primary functionality.
Is this a limitation of Chrysalis, which could be resolved in Kaleidoscope, or is this generally not possible?
It is a limitation of Chrysalis. If you build your own Kaleidoscope firmware, you can configure the “tap” and “hold” values of a key to be any valid Key value you want. See the Qukeys documentation for details.