It’s a bit late, but I’ve found the answer. You must do it in C++. The general idea is for each widget component in your game, it only visible for the first local player (index 0). That’s Unreal idea. So to show them seperately, you will have to spawn that WidgetComponent N - 1 times (N stands for the number of local players) and assign those duplicates with the corresponding ULocalPlayer through the SetPlayerOwner function. Then it should be visible only for that local player.
You can create an actor component, to scan through the owner, get every UWidgetComponent and clone them, assign and store them somewhere in that component to access later.