Id argue float alone would be enough and pattern id makes it bulletproof. But I guess your addition wont hurt.
I think you don't need all that. Same applies for cases and stickers, they are all identical. If you have 5 vanilla BFK from 5 diff users and one withdraws it does not matter which one you return. Or if someone buys/withdraws a case or vanilla knife you can send whichever one of the tradable stock. All you need to store is the class_id, the count and ownership. Exact unit is irrelevant.
Ye thats exactly why I suggested that. No possibility of any gaps no additional requests needed no need to implement caps on bots. Its a stopgap/workaround but what can you do when they pull shit like that.