So, I made a guy. The character controller is written from scratch; he can walk on non-flat terrain, fall with accurate gravity and drag, and collide with static objects appropriately, (based on how quickly he is moving, the collision angle, and whether the static object is level with his head, midsection, or legs). His velocity is calculated according to his change in position over time, and roughly the same calculation is applied to other kinematic rigidbodies within a few meters of him, which lets him move with things that he is standing on and collide appropriately if he gets too close. For normal rigidbody collisions, I  just used his velocity along with the collision information from the kinematic ragdoll colliders on his head, spine, hips, and limbs (it would definitely be possible to consolidate all of the collision detection, but I wanted to try to figure out how a few different methods could work).

If he hits or is hit by something hard enough to be ragdolled, the animator is disabled, his limbs are switched from kinematic rigidbodies to regular ones, and velocity is added depending on the type of collision. If it's a smaller collision, he'll stumble, which involves ragdolling, adding a 'bounce' force to his hips along with a bit of torque and some root rotation to turn him away from whatever he hit, and then the 'get up' function will be called automatically after about a tenth of a second.

For transitioning from ragdolled to animated (from a stumble or from input), his final position is based on his velocity at the hips as long as that velocity won't put him inside of another collider (so that if he's moving, the transition doesn't suddenly stop him in place). His limbs are switched back to kinematic, the animation that best matches his ragdolled pose is calculated based on how his hips and feet are aligned, how quickly he is moving, and how the relative 'down' and 'forward' vectors of his hips compared to world space. The starting rotations of his main joints are saved for the transition, and, if he's not stumbling, the time that it takes for him to switch back to animated is adjusted based on how far his hips will have to move and rotate.

Everything works with generic or humanoid animations in Unity, and I used an Animator component to create the transitions, but everything should work just as well with animation clips and scripted blending. I kept the number of separate animations limited and got extra use out of the few that I created by using different start points depending on how he ends up while ragdolled (for example, he can get up from flat on his back, or from a seated position by starting the same clip halfway through).

If you'd like to see close ups of the character model, textures, etc., be sure to check out this page

Controls: R to reset the character, Enter to fire the cannon (towards the bottom left of the area). While active, press WASD to move and Spacebar to jump. While ragdolled, press WASD to sort of roll around, Q or E to kind of spin in place, and Spacebar to get up,