No, the module functions in BGE work without returning values, and you can't set property values that way.
The basic structure of a module function in BGE is:
# cont is a reference to the controller, similar to bge.logic.getCurrentController()
own = cont.owner
To set property values, you don't need property actuators, just use the syntax:
object["property"] = value
You said you don't want to use that syntax, but along with actuators, it's the only way to set object properties. You don't need to add the property through Blender interface, just set it through the code and it will automatically be added. Also, it works not only for game objects but for scenes as well, and they can store not only the basic types (int, float, str, bool, etc), but any kind of type and reference (including references to other objects). For example:
object1["target"] = object2
That way, you can access the
object2 without needing to search for it, just accessing it through the reference.