For the clockwise/counterclockwise issue you could replace the last line of the python code with this, I'm sure there's probably a way to do the maths before you create the arc but it's too early on a Monday morning.
arcdirection = feature.getAttribute('codeType')
geom = fmeobjects.FMEArc(threePoints)
if arcdirection =='CWA' and geom.isCW():
feature.setGeometry(geom)
elif arcdirection == 'CCA' and geom.isCW()==False:
feature.setGeometry(geom)
else:
x1, y1 = xc - vx1 / len * radius, yc - vy1 / len * radius
threePoints = (
fmeobjects.FMEPoint(x0, y0),
fmeobjects.FMEPoint(x1, y1),
fmeobjects.FMEPoint(x2, y2)
)
geom = fmeobjects.FMEArc(threePoints)
feature.setGeometry(geom)