In CalculiX, there are translational springs (you can use 3 of them to define stiffness in each translational direction). Rotational springs can be created by attaching springs to rigid body ROT NODE.
Check this recent discussion: Creating Joints on assembly meshes - #23 by Sound_Spinning
CalculiX indeed doesn’t have proper joints but you can often achieve the desired result with simpler elements and constraints that are available in this solver.