My understanding of it is that the Primary Location system ought to be a completely physical arrangement, like you've said you're trying to get to. The way yours currently is, by function, is better handled as Classifications. But if your company has been with Maximo for a decent amount of time, Classifications didn't "always" exist, from what I recall from nearly 20 years ago in the good old days of Maximo 4.1.1 and 5.x.; so maybe that's why they did what they did.
As long as you move these via the UI, I don't think you'd have any problems. Trying to do it through other (likely easier) means sounds like a recipe for trouble. When you move it via the UI, it also handles making the proper entries in LOCHIERARCHY and LOCANCESTOR tables. IMO, it's not worth risking a data error in these tables by trying to move the Locations by some other means.
I'd recommend that, if you can, make a Classifications Hierarchy and use it while you're converting these. This way you still retain a simple way to, borrowing from your example, find all the restrooms. However, if you think you'd ever need to do this same kind of cost rollup by function, maybe you should make a 2nd Locations System.
Another thing that I found as really useful for us: my Location system can feel complicated and overwhelming for some users. For our college campus, I've got it broken down as CAMPUS | AREA | COMPLEX | BUILDING | FLOOR | WING | HALLWAY | ROOM | SUB-ROOM. Not every Location breaks down that way, and some are even more complicated than that (the most levels down I have is 13!). So, to keep it easy for end users, on the LOCATIONS table, I created two custom fields, Building and Floor, and created a custom Domain for each. Then I added these two fields to the Locations "Select Value" lookup. (And now that I think of it, maybe trying to add the Classification Description wouldn't be a bad idea either. . .)