As you have mentioned, identifiers are global so you will have to do something like:
@startuml
package "first" {
node {
component [router] as first_router
}
node "physical 1" {
component [Logical_VLAN_10] as first_Logical_VLAN_10
first_Logical_VLAN_10 - first_router
}
}
package "second" {
node {
component [router] as second_router
}
node "physical 2" {
component [Logical_VLAN_10] as second_Logical_VLAN_10
first_Logical_VLAN_10 - second_Logical_VLAN_10
}
}
@enduml

We understand that this is may not be very convenient for you, so we are ok about looking for an extended syntax.
(BTW, somehow, this is already working for classes - see http://plantuml.sourceforge.net/classes.html#Namespaces - but not for other diagrams).
Keep also in mind that we have to preserve ascending compatibility.
We could create a new "set namespaceSeparator" instruction.
Using this, we could have:
@startuml
set namespaceSeparator .
package "first" {
node {
[router]
}
node "physical 1" {
[Logical_VLAN_10] - router
}
}
package "second" {
node {
'this would work because we have define a namespaceSeparator
[router]
}
node "physical 1" {
[Logical_VLAN_10] - [router]
[Logical_VLAN_10] - first."physical 1".Logical_VLAN_10
}
}
@enduml
Note that "node" defines also a namespace, so we would have to use first."physical 1".Logical_VLAN_10 to denotate the first Logical_VLAN_10.
Any though about this suggestion ?