How to create drivers but maintain the ability to modify the property?
Custom Properties and Delta Transformation

Delta Transform Location X component with Driver cooperate nicely with regular Location. You may grab and move object with g.  Formula is in tooltip. See Arrow. Image above.  Emphasizing difference between regular object Location and Delta Location.
I am trying to prioritize various issues you have in your question above.  So some things I may say you might already know.  Same as in any candidate answer.
You may also create a Parent/Child relationship in Blender. Two objects selected and then Control P your object to another object to combine locations and have independence.
https://www.youtube.com/watch?v=kq3Ja-nNv7Q
For the near future ... I suggest you use the datapath only when self is data in the object panel,  in a Python Script. Self does not always refer to an object as displayed in the object panel. Self  might refer to a Modifier or Constraint or Material Setting or Fluid Setting ... depending on the panel with the driver.
The Blender Python Console Window and the OS owned text Console window are two different windows.
You wrote [pyFunction(self, target)]
In your function please add
print(type(self))
to see the text name in the Text Console Window.  The Python Console provides a python environment in a Blender Window. Text Console can show print results from a Script and may be provided by the OS. Menu / Toggle Console Window.
A driver on a location or delta location can refer to another custom property of a different object.  Final location is a combination of location and delta location.  Thus if driver controls delta location, then (regular) location can be be free for UI interaction control.
The same can be said analogously of rotation.  Other techniques exist.
Allow the driver to refer to a different custom property value.  Indirection can solve or introduce any problem.
Custom Properties have all the conveniences of other standard values of Blender.  They are keyframe capable.

Display of Custom Properties. Image Above.  Click the Add button, enter value. Please know there are default limits which can be edited.  Click the edit button.

Driver referring to custom property with offset as part of the expression or formula. Here I entered two properties on one object for purposes of less image editing.  You have more freedom than that.
Any object can hold custom properties which is similar to Python Dictionary. See [custom properties] which appear in the panel.  When the property is numeric for example it can be keyframed.  The keyframed property can be seen in the graph editor and manipulated like any other graph window curve.  The Driver can refer to those properties. Custom Property CRUD Create Reference Update Delete is possible.  If the user interface is inadequate perhaps the creation of a custom property can be another question.
Keep in mind Python functions can be registered for access in drivers.  This can explained more fully in another question or search.
And the driver can access the custom property by object name and property name or path.
Please note that it may be useful to create an independent object to hold custom property values.  Blender can complain with messages in the console window when it deems references for a cyclical dependency.  Blender may be arguable too strict about that.  But see the messages in the console might interfere with your needs.
A constraint can copy the location of another object if desired but is more dominating. I would test carefully to see the differences.