The simplest, modestly realistic, model I can think of would be parameterized by the following:

 - **Mz**   The Turning Moment of the ship about the steering (ie Z or yaw) axis;
 - **L/2**  The distance of the rudder from the turning axis, approximated as 1/2 the ship's length L;
 - **v**    The current linear velocity of the ship (relative to the **water**, not the land nearby, so take into account any current).;
 - **w**    The current angular velocity of the ship;
 - **p1**,**p2** The linear and quadratic coefficients respectively of angular friction (ie resistance to turning) for the water (these control how quickly the ship stops turning when the rudder returns to straight, and impose a limitation on how sharply the rudder can be turned before losing any effect.)
 - **A** the area of the rudder;
 - **d** the density of the water.
 - **theta** the current rudder angle measured CCW from straight back in radians
 - **heading** the current heading measured CCW from origin direction.
 - **delta-t** is your time interval.

Then the relevant equations of motion can be derived something like this:

 1. Turning torque from rudder **Tr** == sin(**theta**) * **A** * **v** * **d**
 2. Friction torque from water **Tw** == **p1** * **w** +  **p2** *
    **w**^2
 3. Net torque **T** == max(0, abs(**Tr**) - abs(**Tw**)) * sign(**Tr**)
 4. **w'** == **w** + **T** / **Mz**
 5. **heading'** == **heading** + (**w'** + **w**) * **delta-t** / 2 

I think I have the signs correct, but that can be corrected if necessary by multiplying **T** by -1.

By playing around with the parameters you should even be able to get an appropriately different feel for larger vessels compared to smaller ones. You should set a modest limit on how fast the rudder can be turned as well.