Did a little more digging - in Lock.bundle/Contents/Code... __init__.py, bad base paths - they were referencing the .bat versions of your code, probably from your Windows version. I modified them as below:
BASEPATHLOCK = (Core.storage.join_path(Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name), 'Lock.bundle')+'/Contents/Resources/lock_support/lock.sh')
BASEPATHUNLOCK = (Core.storage.join_path(Core.storage.join_path(Core.app_support_path, Core.config.bundles_dir_name), 'Lock.bundle')+'/Contents/Resources/lock_support/unlock.sh')
However, still not getting the expected behavior out of the channel controls. I'm not very familiar with Python - so I'm kind of at a loss for debugging past here for the time being. The output from logs you are writing out are as follows, not sure if they will add any insight for you, but I figured I'd add them anyway:
2014-09-16 01:31:38,198 (7f196ac77700) : DEBUG (runtime:717) - Handling request GET /video/lock
2014-09-16 01:31:38,200 (7f196ac77700) : DEBUG (runtime:49) - Received packed state data (80 bytes)
2014-09-16 01:31:38,201 (7f196ac77700) : DEBUG (runtime:814) - Found route matching /video/lock
2014-09-16 01:31:38,202 (7f196ac77700) : DEBUG (base:125) - Checking if com.plexapp.plugins.lockunlock is broken
2014-09-16 01:31:38,203 (7f196ac77700) : DEBUG (networking:172) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X1N0b3JlU2VydmljZTpJc0NoYW5uZWxCcm9rZW4_/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMQpzMzAKY29tLnBsZXhhcHAucGx1Z2lucy5sb2NrdW5sb2NrczEwCmlkZW50aWZpZXJyMAo_'
2014-09-16 01:31:38,213 (7f196ac77700) : DEBUG (runtime:106) - Sending packed state data (111 bytes)
2014-09-16 01:31:38,214 (7f196ac77700) : DEBUG (runtime:918) - Response: [200] MediaContainer, 1035 bytes
2014-09-16 01:31:41,788 (7f196ac77700) : DEBUG (runtime:717) - Handling request GET /video/lock
2014-09-16 01:31:41,789 (7f196ac77700) : DEBUG (runtime:49) - Received packed state data (80 bytes)
2014-09-16 01:31:41,791 (7f196ac77700) : DEBUG (runtime:814) - Found route matching /video/lock
2014-09-16 01:31:41,791 (7f196ac77700) : DEBUG (base:125) - Checking if com.plexapp.plugins.lockunlock is broken
2014-09-16 01:31:41,792 (7f196ac77700) : DEBUG (networking:172) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X1N0b3JlU2VydmljZTpJc0NoYW5uZWxCcm9rZW4_/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMQpzMzAKY29tLnBsZXhhcHAucGx1Z2lucy5sb2NrdW5sb2NrczEwCmlkZW50aWZpZXJyMAo_'
2014-09-16 01:31:41,802 (7f196ac77700) : DEBUG (runtime:106) - Sending packed state data (111 bytes)
2014-09-16 01:31:41,803 (7f196ac77700) : DEBUG (runtime:918) - Response: [200] MediaContainer, 1035 bytes
2014-09-16 01:31:41,818 (7f196ac77700) : DEBUG (runtime:717) - Handling request GET /video/lock/lock?path=%2Fvar%2Flib%2Fplexmediaserver%2FLibrary%2FApplication+Support%2FPlex+Media+Server%2FPlug-ins%2FLock.bundle%2FContents%2FResources%2Flock_support%2Flock.sh&task=Locked&query=
2014-09-16 01:31:41,820 (7f196ac77700) : DEBUG (runtime:49) - Received packed state data (80 bytes)
2014-09-16 01:31:41,821 (7f196ac77700) : DEBUG (runtime:814) - Found route matching /video/lock/lock
2014-09-16 01:31:41,821 (7f196ac77700) : DEBUG (__init__:64) - ======LOCK======Locking
2014-09-16 01:31:41,827 (7f196ac77700) : DEBUG (__init__:64) - ======LOCK======Locked
2014-09-16 01:31:41,830 (7f196ac77700) : DEBUG (runtime:106) - Sending packed state data (111 bytes)
2014-09-16 01:31:41,830 (7f196ac77700) : DEBUG (runtime:918) - Response: [200] MediaContainer, 576 bytes
I gotta hit the sack for a few hours, if you need me to try anything out I'll give it a go tomorrow sometime.
Thanks.