Use system.tag.readBlocking() as usual to read them. If the tag is read-only, you will need to use system.tag.configure to write them. Otherwise, system.tag.writeBlocking() can write them, too.
Be aware that there is no formal way to access changes to tag properties by script, other than the native events for .value and for alarms. (UI tag bindings do seem to subscribe properly, now-a-days.)
That sounds like a disaster in the making, if you plan on writing to custom properties regularly. They aren't really designed for that. Use custom properties as static configuration information (dynamic user interfaces and such), where the normal use of the property is just read.
For values, like state information, that will change with your process, use ordinary tags (memory tags, presumably).