Bookings API versus existing spaghetti code
In answer to part (a) there is the Resource Conflict module, which appears to be similar in goal to the modules you mention above.

As for part (b) I'd argue that it is typically better to update or replace custom spaghetti code in such a way to work with existing modules--doing so will greatly ease the work of future maintainers of your code, and allow it to benefit from future enhancements to the Bookings API.