Saved documents automatically select the first value of a keyword field even if the user hasn't selected one.
For the keyword formula, use:
"--Select from list--" : @DbColumn() so that blank is selected when nothing is selected
You can then check for the first value using a field validation formula to force the user to select something.
You can't have "Allow values not in list" for a keyword field.
Use two fields, one called Category which is made from the @DbColumn, and a separate text field called OtherCategory. You can then have a computed field named RealCategory which is equal to OtherCategory if it is non-empty or Category if it is empty.